Precision Cloud by Dr ABIRAM SIVPRASAD
Precision Cloud by Dr. Abhiram Sivprasad"
The " Precision Cloud" script, created by Dr. Abhiram Sivprasad, is a multi-purpose technical analysis tool designed for Forex, Bitcoin, Commodities, Stocks, and Options trading. It focuses on identifying key levels of support and resistance, combined with moving averages (EMAs) and central pivot ranges (CPR), to help traders make informed trading decisions. The script also provides a visual "light system" to highlight potential long or short positions, aiding traders in entering trades with a clear strategy.
Key Features of the Script:
Central Pivot Range (CPR):
The CPR is calculated as the average of the high, low, and close of the price, while the top and bottom pivots are derived from it. These act as dynamic support and resistance zones.
The script can plot daily CPR, support, and resistance levels (S1/R1, S2/R2, S3/R3) as well as optional weekly and monthly pivot points.
The CPR helps identify whether the price is in a bullish, bearish, or neutral zone.
Support and Resistance Levels:
Three daily support (S1, S2, S3) and resistance (R1, R2, R3) levels are plotted based on the CPR.
These levels act as potential reversal or breakout points, allowing traders to make decisions around key price points.
EMA (Exponential Moving Averages):
The script includes two customizable EMAs (default periods of 9 and 21). You can choose the source for these EMAs (open, high, low, or close).
The crossovers between EMA1 and EMA2 help identify potential trend reversals or momentum shifts.
Lagging Span:
The Lagging Span is plotted with a customizable displacement (default 26), which helps identify overall trend direction by comparing past price with the current price.
Light System:
A color-coded table provides a visual representation of market conditions:
Green indicates bullish signals (e.g., price above CPR, EMAs aligning positively).
Red indicates bearish signals (e.g., price below CPR, EMAs aligning negatively).
Yellow indicates neutral conditions, where there is no clear trend direction.
The system includes lights for CPR, EMA, Long Position, and Short Position, helping traders quickly assess whether the market is in a buying or selling opportunity.
Trading Strategies Using the Script
1. Forex Trading:
Trend-Following with EMAs: Use the EMA crossovers to capture trending markets in Forex. A green light for the EMA combined with a price above the daily or weekly pivot levels suggests a buying opportunity. Conversely, if the EMA light turns red and price falls below the CPR levels, look for shorting opportunities.
Reversal Strategy: Watch for price action near the daily S1/R1 levels. If price holds above S1 and the EMA is green, this could signal a reversal from support. The same applies to resistance levels.
2. Bitcoin Trading:
Momentum Breakouts: Bitcoin is known for its sharp moves. The script helps to identify breakouts from the CPR range. If the price breaks above the TC (Top Central Pivot) with bullish EMA alignment (green light), it could signal a strong uptrend.
Lagging Span Confirmation: Use the Lagging Span to confirm the trend direction. For Bitcoin's volatility, when the lagging span shows consistent alignment with the price and CPR, it often indicates continuation of the trend.
3. Commodities Trading:
Support/Resistance Bounce: Commodities such as gold and oil often react well to pivot levels. Look for price bouncing off S1 or R1 for potential entry points. A green CPR light along with price above the pivot range supports a bullish bias.
EMA Pullback Strategy: If price moves in a strong trend and pulls back to one of the EMAs, a green EMA light suggests re-entry on a pullback. If the EMA light is red and price breaks below the BC (Bottom Central Pivot), short positions could be considered.
4. Stocks Trading:
Long Position Strategy: For stocks, use the combination of the long position light turning green (price above TC and EMA alignment) as a signal to buy. This could be especially useful for riding bullish trends in growth stocks or during earnings seasons when volatility is high.
Short Position Strategy: If the short position light turns green, indicating price below BC and EMAs turning bearish, this could be an ideal setup for shorting overvalued stocks or during market corrections.
5. Options Trading:
Directional Bias for Options: The light system is particularly helpful for options traders. A green long position light provides a clear signal to buy call options, while a green short position light supports buying puts.
Pivot Breakout Strategy: Buy options (calls or puts) when the price breaks above resistance or below support, with confirmation from the CPR and EMA lights. This helps capture the sharp moves required for profitable options trades.
Conclusion
The S&R Precision Cloud script is a versatile tool for traders across markets, including Forex, Bitcoin, Commodities, Stocks, and Options. It combines critical technical elements like pivot ranges, support and resistance levels, EMAs, and the Lagging Span to provide a clear picture of market conditions. The intuitive light system helps traders quickly assess whether to take a long or short position, making it an excellent tool for both new and experienced traders.
The S&R Precision Cloud by Dr. Abhiram Sivprasad script is a technical analysis tool designed to assist traders in making informed decisions. However, it should not be interpreted as financial or investment advice. The signals generated by the script are based on historical price data and technical indicators, which are inherently subject to market fluctuations and do not guarantee future performance.
Trading in Forex, Bitcoin, Commodities, Stocks, and Options carries a high level of risk and may not be suitable for all investors. You should be aware of the risks involved and be willing to accept them before engaging in such activities. Always conduct your own research and consult with a licensed financial advisor or professional before making any trading decisions.
The creators of this script are not responsible for any financial losses that may occur from its use. Past performance is not indicative of future results, and the use of this script is at your own risk.
Cari dalam skrip untuk "break"
Thrax - Intraday Market Pressure ZonesTHRAX - INTRADAY MARKET PRESSURE ZONES
This indicator identifies potential support and resistance zones based on areas of significant market pressure. It dynamically plots these zones and adjusts their visibility based on real-time price action and user-defined thresholds. The indicator is useful for traders seeking to understand intraday market pressure, visualize zones of potential price reversals, and analyze volume imbalances at critical levels.
1. Support/Resistance Zones: Wherever the price retraces significantly from its high a support zone is drawn and when it retraces significantly from it low a resistance zone is drawn. The significant retracing is measured by the wick threshold percentage. For instance, if set to 75%, it implies price retracement of 75% either from high or from low for a particular candel
Volume delat: Displays volume delta information where the zones are formed. This can be used by trader to consider only those zones where delta is significant.
2. Breakout Detection: Monitors for price breakouts beyond established zones, deleting zones that are invalidated by price movement. when the price breaks a given zone with the threshold, it is considered to be mitigated and chances of trend continuation is decent.
Candle Coloring: Uses color codes (green, red, and yellow) to represent bullish, bearish, and indecisive (doji) candles, aiding quick visual assessment.
INPUTS
1. Wick Threshold (%) : Sets the minimum wick percentage required for a candle to be considered a support or resistance candidate.
2. Breakout Threshold (%) : Determines the percentage above or below a support or resistance zone that defines a breakout condition. if breaks a zone with the set threshold then the zone will be considered mititgated.
3. Max Number of Support/Resistance Zones : Limits the maximum number of support/resistance zones displayed on the chart, ranging from 1 to 5.
4. Show Wick Percentage Labels : Toggles the display of percentage values for upper and lower wicks on each candle.
TRADE SETUP
Identifying Entry Points: Look for the formation of support or resistance zones. Wait for price to retrace to these zones. if you are willing to take risk, you can consider even zones with low delta. If you want to be more cautious you should consider zones with high delta.
Volume Confirmation: Use the volume information to confirm the strength of the zone. Strong volume differences (displayed as labels) can indicate significant market pressure at these levels.
Breakout Trades: If price breaks through a support/resistance zone by more than the breakout threshold, consider this a signal for a potential trend continuation in the breakout direction.
Risk Management: Set stop-loss levels slightly outside of the identified zones to minimize risk in case of false breakouts. This can be set in input setting for breakout threshold.
Bonus Tip : Mark your significant highs and lows from where prices have retraced multiple times in the near past and if the zone is near these levels it can serve s a strong candidate of support or resistance
Therefore, in conclusion monitor the zones, based on delta and volume presence filter out the zone, wait for price retracement to the zone, intiate the trade with stop loss below zone with a set percentage.
Harish Algo 2The script "Harish Algo 2" is a Pine Script-based TradingView indicator that automatically identifies significant trendlines based on fractal points and tracks price interactions with those trendlines. Key features include:
Fractal Detection: The script identifies fractal highs and lows, using a configurable fractal period, to serve as pivot points for generating trendlines. Fractal highs are marked in blue, and fractal lows are marked in red.
Dynamic Trendlines: It draws trendlines between consecutive fractal points, with a limit on the maximum number of active trendlines. The trendlines can be extended either in both directions or to the right, as per user input. The line width can also be customized.
Support/Resistance Counting: Each trendline tracks how many times the price interacts with it. If the price approaches the line from above and touches or stays near it, the line is considered a support. If the price approaches from below, it is considered a resistance. These counts are used to modify the trendline's color and appearance.
Trendlines with 2 support interactions turn green.
Trendlines with 2 resistance interactions turn red.
Trendlines with 3 or more interactions turn black.
Trendline Styling: Trendlines that extend over a long period (more than 100 bars) change to a dotted style to highlight their persistence.
Break Detection: The script monitors if the price crosses a trendline, signaling a potential breakout or breakdown. Once a trendline is broken, it stops extending further.
Trendline Removal: The script ensures that only a limited number of trendlines are active at a time. If the maximum number of trendlines is reached, the oldest trendline is removed to make space for new ones.
This indicator is designed to help traders visualize important trendlines, spot potential support and resistance levels, and detect breakouts or breakdowns based on price movement.
Volume-Adjusted Bollinger BandsThe Volume-Adjusted Bollinger Bands (VABB) indicator is an advanced technical analysis tool that enhances the traditional Bollinger Bands by incorporating volume data. This integration allows the bands to dynamically adjust based on market volume, providing a more nuanced view of price movements and volatility. The key qualities of the VABB indicator include:
1. Dynamic Adjustment with Volume: Traditional Bollinger Bands are based solely on price data and standard deviations. The VABB indicator adjusts the width of the bands based on the volume ratio, making them more responsive to changes in market activity. This means that during periods of high volume, the bands will expand, and during periods of low volume, they will contract. This adjustment helps to reinforce the significance of price movements relative to the central line (VWMA).
2. Volume-Weighted Moving Average (VWMA): Instead of using a simple moving average (SMA) as the central line, the VABB uses the VWMA, which weights prices by volume. This provides a more accurate representation of the average price level, considering the trading volume.
3. Enhanced Signal Reliability: By incorporating volume, the VABB can filter out false signals that might occur in low-volume conditions. This makes the indicator particularly useful for identifying significant price movements that are supported by strong trading activity.
How to Use and Interpret the VABB Indicator
To use the VABB indicator, you need to set it up on your trading platform with the following parameters:
1. BB Length: The number of periods for calculating the Bollinger Bands (default is 20).
2. BB Multiplier: The multiplier for the standard deviation to set the width of the Bollinger Bands (default is 2.0).
3. Volume MA Length: The number of periods for calculating the moving average of the volume (default is 14).
Volume Ratio Smoothing Length: The number of periods for smoothing the volume ratio (default is 5).
Interpretation
1.Trend Identification: The VWMA serves as the central line. When the price is above the VWMA, it indicates an uptrend, and when it is below, it indicates a downtrend. The direction of the VWMA itself can also signal the trend's strength.
2. Volatility and Volume Analysis: The width of the VABB bands reflects both volatility and volume. Wider bands indicate high volatility and/or high volume, suggesting significant price movements. Narrower bands indicate low volatility and/or low volume, suggesting consolidation.
3. Trading Signals:
Breakouts: A price move outside the adjusted upper or lower bands can signal a potential breakout. High volume during such moves reinforces the breakout's validity.
Reversals: When the price touches or crosses the adjusted upper band, it may indicate overbought conditions, while touching or crossing the adjusted lower band may indicate oversold conditions. These conditions can signal potential reversals, especially if confirmed by other indicators or volume patterns.
Volume Confirmation: The volume ratio component helps confirm the strength of price movements. For instance, a breakout accompanied by a high volume ratio is more likely to be sustained than one with a low volume ratio.
Practical Example
Bullish Scenario: If the price crosses above the adjusted upper band with a high volume ratio, it suggests a strong bullish breakout. Traders might consider entering a long position, setting a stop-loss just below the VWMA or the lower band.
Bearish Scenario: Conversely, if the price crosses below the adjusted lower band with a high volume ratio, it suggests a strong bearish breakout. Traders might consider entering a short position, setting a stop-loss just above the VWMA or the upper band.
Conclusion
The Volume-Adjusted Bollinger Bands (VABB) indicator is a powerful tool that enhances traditional Bollinger Bands by incorporating volume data. This dynamic adjustment helps traders better understand market conditions and make more informed trading decisions. By using the VABB indicator, traders can identify significant price movements supported by volume, improving the reliability of their trading signals.
The Volume-Adjusted Bollinger Bands (VABB) indicator is provided for educational and informational purposes only. It is not financial advice and should not be construed as a recommendation to buy, sell, or hold any financial instrument. Trading involves significant risk of loss and is not suitable for all investors. Past performance is not indicative of future results.
Higher Timeframe High & Low [ChartPrime]The Higher Timeframe High & Low Indicator plots key levels (high, low, and average price) from a higher timeframe onto the current chart, aiding traders in identifying significant support and resistance zones.
The indicator also detects and labels breakout points and can display trend directions based on these higher timeframe levels breakout points.
Key Features:
◆ Higher Timeframe Levels:
Plots the high, low, and average price from a selected higher timeframe onto the current chart.
Extends these levels into the future for better visualization.
◆ Breakout Detection:
Identifies and labels breakouts above the higher timeframe high or below the higher timeframe low.
Breakout points are clearly marked with labels indicating "High Break" or "Low Break" with timeframe mark.
If the following break out type is the same that previous, it does not marked by labels, but still marked by bar color.
◆ Trend Visualization:
Optionally displays trend direction by changing bar colors and line styles based on breakout conditions.
Trend indication helps in identifying bullish or bearish market conditions.
◆ Support and Resistance Indication:
Marks support and resistance points with '◆' symbols when the current timeframe's high or low interacts with the higher timeframe's levels.
◆ Period separation:
Background color changes to indicate period separation if enabled.
◆ Inputs:
Extension to the right of High and Low: Sets the number of bars to extend the high and low lines into the future.
Timeframe: Selects the higher timeframe (e.g., Daily) to use for plotting high and low levels.
Period Separator: Toggles the visual separator for periods.
Show Trend?: Toggles the trend visualization, changing bar colors and plot styles based on breakouts.
Show Breakout Labels?: Toggles the Breakout Labels visualization.
Indicator Logic:
Historical vs. Real-Time Bars: Adjusts values based on whether the bar is historical or real-time to ensure accurate plotting.
High and Low Prices: Retrieves the high and low prices from the selected higher timeframe.
Breakout Conditions: Determines if the current price has crossed above the higher timeframe high (high break) or below the higher timeframe low (low break).
Color and Trend Logic: Adjusts colors and checks for breakouts to avoid multiple labels and indicate trend direction.
Usage Notes:
This indicator is ideal for traders looking to integrate multi-timeframe analysis into their strategy.
The higher timeframe levels act as significant support and resistance zones, helping traders identify potential reversal or continuation points.
The breakout labels and trend visualization provide additional context for trading decisions, indicating when the price has breached key levels and is likely to continue in that direction.
This indicator enhances chart analysis by providing clear, visual cues from higher timeframe data, helping traders make more informed decisions based on a broader market perspective.
ORB Algo | Flux Charts💎 GENERAL OVERVIEW
Introducing our new ORB Algo indicator! ORB stands for "Opening Range Breakout" which is a common trading strategy. The indicator can analyze the market trend in the current session and give "Buy / Sell", "Take Profit" and "Stop Loss" signals. For more information about the analyzing process of the indicator, you can read "How Does It Work ?" section of the description.
Features of the new ORB Algo indicator :
Buy & Sell Signals
Up To 3 Take Profit Signals
Stop-Loss Signals
Alerts for Buy / Sell, Take-Profit and Stop-Loss
Customizable Algoritm
Session Dashboard
Backtesting Dashboard
📌 HOW DOES IT WORK ?
This indicator works best in 1-minute timeframe. The idea is that the trend of the current session can be forecasted by analyzing the market for a while after the session starts. However, each market has it's own dynamics and the algorithm will need fine-tuning to get the best performance possible. So, we've implemented a "Backtesting Dashboard" that shows the past performance of the algorithm in the current ticker with your current settings. Always keep in mind that past performance does not guarantee future results.
Here are the steps of the algorithm explained briefly :
1. The algorithm follows and analyzes the first 30 minutes (can be adjusted) of the session.
2. Then, algorithm checks for breakouts of the opening range's high or low.
3. If a breakout happens in a bullish or a bearish direction, the algorithm will now check for retests of the breakout. Depending on the sensitivity setting, there must be 0 / 1 / 2 / 3 failed retests for the breakout to be considered as reliable.
4. If the breakout is reliable, the algorithm will give an entry signal.
5. After the position entry, algorithm will now wait for Take-Profit or Stop-Loss zones and signal if any of them occur.
If you wonder how does the indicator find Take-Profit & Stop-Loss zones, you can check the "Settings" section of the description.
🚩UNIQUENESS
While there are indicators that show the opening range of the session, they come short with features like indicating breakouts, entries, and Take-Profit & Stop-Loss zones. We are also aware of that different stock markets have different dynamics, and tuning the algorithm for different markets is really important for better results, so we decided to make the algorithm fully customizable. Besides all that, our indicator contains a detailed backtesting dashboard, so you can see past performance of the algorithm in the current ticker. While past performance does not yield any guarantee for future results, we believe that a backtesting dashboard is necessary for tuning the algorithm. Another strength of this indicator is that there are multiple options for detection of Take-Profit and Stop-Loss zones, which the trader can select one of their liking.
⚙️SETTINGS
Keep in mind that best chart timeframe for this indicator to work is the 1-minute timeframe.
TP = Take-Profit
SL = Stop-Loss
EMA = Exponential Moving Average
OR = Opening Range
ATR = Average True Range
1. Algorithm
ORB Timeframe -> This setting determines the timeframe that the algorithm will analyze the market after a new session begins before giving any signals. It's important to experiment with this setting and find the best option that suits the current ticker for the best performance. More volatile stocks will often require this setting to be larger, while more stabilized stocks may have this setting shorter.
Sensitivity -> This setting determines how much failed retests are needed to take a position entry. Higher senstivity means that less retests are needed to consider the breakout as reliable. If you think that the current ticker makes strong movements in a bullish & bearish direction after a breakout, you should set this setting higher. If you think the opposite, meaning that the ticker does not decide the trend right after a breakout, this setting show be lower.
(High = 0 Retests, Medium = 1 Retest, Low = 2 Retests, Lowest = 3 Retests)
Breakout Condition -> The condition for the algorithm to detect breakouts.
Close = Bar needs to close higher than the OR High Line in a bullish breakout, or lower than the OR Low Line in a bearish breakout. EMA = The EMA of the bar must be higher / lower than OR Lines instead of the close price.
TP Method -> The method for the algorithm to use when determining TP zones.
Dynamic = This TP method essentially tries to find the bar that price starts declining the current trend and going to the other direction, and puts a TP zone there. To achieve this, it uses an EMA line, and when the close price of a bar crosses the EMA line, It's a TP spot.
ATR = In this TP method, instead of a dynamic approach the TP zones are pre-determined using the ATR of the entry bar. This option is generally for traders who just want to know their TP spots beforehand while trading. Selecting this option will also show TP zones at the ORB Dashboard.
"Dynamic" option generally performs better, while the "ATR" method is safer to use.
EMA Length -> This setting determines the length of the EMA line used in "Dynamic TP method" and "EMA Breakout Condition". This is completely up to the trader's choice, though the default option should generally perform well. You might want to experiment with this setting and find the optimal length for the current ticker.
Stop-Loss -> Algorithm will place the Stop-Loss zone using setting.
Safer = The SL zone will be placed closer to the OR High for a bullish entry, and closer to the OR Low for a bearish entry.
Balanced = The SL zone will be placed in the center of OR High & OR Low
Risky = The SL zone will be placed closer to the OR Low for a bullish entry, and closer to the OR High for a bearish entry.
Adaptive SL -> This option only takes effect if the first TP zone is hit.
Enabled = After the 1st TP zone is hit, the SL zone will be moved to the entry price, essentially making the position risk-free.
Disabled = The SL zone will never change.
2. ORB Dashboard
ORB Dashboard shows the information about the current session.
3. ORB Backtesting
ORB Backtesting Dashboard allows you to see past performance of the algorithm in the current ticker with current settings.
Total amount of days that can be backtested depends on your TV subscription.
Backtesting Exit Ratios -> You can select how much of percent your entry will be closed at any TP zone while backtesting. For example, %90, %5, %5 means that %90 of the position will be closed at the first TP zone, %5 of it will be closed at the 2nd TP zone, and %5 of it will be closed at the last TP zone.
ORB With Buffer, Target & Stop LossThe "ORB With Buffer" is a comprehensive technical analysis tool designed to identify, plot, and visualize key levels associated with price breakouts. It offers a dynamic representation of breakout zones, buffer areas, target levels, and stop-loss levels on both sides of the market.
Key Features:
ORB Levels (Opening Range Breakout):
The indicator identifies and plots the Opening Range Breakout levels, marking the high and low points of the initial trading period. In our case the ORB range is locked to 15 Minutes irrespective of the chart's timeframe.
Buffer Areas for Breakout:
Buffer zones are displayed around the ORB levels, representing a range where traders cant wait to join the direction to counter fake ORB breakouts
Targets:
The indicator calculates and visualizes target levels. Approximately 1% of instrument's price from entry point
Stop Loss Levels:
Stop-loss levels are indicated on both sides of the market, offering traders a clear reference point to manage risk.
BreakoutTrendFollowingINFO:
The "BreakoutTrendFollowing" indicator is a comprehensive trading system designed for trend-following in various market environments. It combines multiple technical indicators, including Moving Averages (MA), MACD, and RSI,
along with volume analysis and breakout detection from consolidation, to identify potential entry points in trending markets. This strategy is particularly effective for assets that exhibit strong trends and significant price movements.
Note that using the consolidation filter reduces the amount of entries the strategy detects significantly, and needs to be used if we want to have an increased confidence in the trend via breakout.
However, the strategy can be easily transformed to various only trend-following strategies, by applying different filters and configurations.
The indicator can be used to connect to the Signal input of the TTS (TempalteTradingStrategy) by jason5480 in order to backtest it, thus effectively turning it into a strategy (instructions below in TTS CONNECTIVITY section)
DETAILS:
The strategy's core is built upon several key components:
Moving Average (MA): Used to determine the general trend direction. The strategy checks if the price is above the selected MA type and length.
MACD Filter: Analyzes the relationship between two moving averages to confirm the trend's momentum.
Consolidation Detection: Identifies periods of price consolidation and triggers trades on breakouts from these ranges.
Volume Analysis: Assesses trading volume to confirm the strength and validity of the breakout.
RSI: Used to avoid overbought conditions, ensuring trades are entered in favorable market situations.
Wick filters: make sure there is not a long wick that indicates selling pressure from above
The strategy generates buy signals when several conditions are met concurrently (each one of them can be individually enabled/disabled)"
The price is above the selected MA.
A breakout occurs from a configurable consolidation range.
The MACD line is above the signal line, indicating bullish momentum.
The RSI is below the overbought threshold.
There's an increase in trading volume, confirming the breakout's strength.
Currently the strategy fires SL signals, as the approach is to check for loss of momentum - i.e. crossunder of the MACD line and signal line, but that is to everyone to determine the exit conditions.
The buy and SL signals are set on the chart using green or orange triangles on the below/above the price action.
SETTINGS:
Users can customize various parameters, including MA type and period, MACD settings, consolidation length, and volume increase percentage. The strategy is equipped with alert conditions for both entry (buy signals) and exit (set stop loss) points, facilitating both manual and automated trading.
Each one of the technical indicators, as well as the consilidation range and breakout/wick settings can be configured and enabled/disabled individually.
Please thoroughly review the available settings of the script, but here is an outline of the most important ones:
Use bar wicks (instead of open/close) - the ref_high/low will be taken based on the bar wicks, rather than the open/close when determining the breakout and MA
Enter position only on green candles - additional filters to make sure that we enter only on strong momentum
MA Filter: (enable, source, type, length) - general settings for MA filter to be checked against the stock price (close or upper wick)
MACD Filter: (enable, source, Osc MA type, Signal MA type, Fast MA length, Slow MA length, Low MACD Hist) - detailed settings for fine MACD tuning
Consolidation:
Consolidation Type: we have two different ways of detecting the consolidation, note the types below.
CONSOLIDATION_BASIC - consolidation areas by looking for the pivot point of a trend and counts the number of bars that have not broken the consolidation high/low levels.
CONSOLIDATIO_RANGE_PERCENT - identifies consolidation by comparing the range between the highest and lowest price points over a specified period.
So in summary the CONSOLIDATIO_RANGE_PERCENT uses a percentage-based range to define consolidation, while CONSOLIDATION_BASIC uses a count of bars within a high-low range to establish consolidation.
Thus the former is more focused on the tightness of the price range, whereas the latter emphasizes the duration of the consolidation phase.
The CONSOLIDATIO_RANGE_PERCENT might be more sensitive to recent price movements and suitable for shorter-term analysis, while CONSOLIDATION_BASIC could be better for identifying longer-term consolidation patterns.
Min consolidation length - applicable for CONSOLIDATION_BASIC case, the min number of bars for the price to be in the range to consider consolidation
Consolidation Loopback period - applicable for CONSOLIDATION_BASIC case, the loopback number of bars to look for consolidation
Consolidation Range percent - applicable for CONSOLIDATIO_RANGE_PERCENT, the percent between the high and low in the range to consider consolidation
Plot consolidation - enables plotting of the consolidation (only for debug purposes)
Breakout: (enable, low, high) - the definition of the breakout from the previous consolidation range, the price should be between to determine the breakout as successfull
Upper wick: (enable, percent) - defines the percent of the upper wick compared to the whole candle to allow breakout (if the wick is too big part of the candle we can consider entering the position riskier)
RSI: (enable, length, overbought) - general settings for RSI TA
Volume (enbale, percentage increase, average volume filter en, loopback bars) - percentage of increase of the volume to consider for a breakout. There are two modes - percentage increase compared to the previous bar, or percentage against the average volume for the last loopback bars.
Note that there are many different configuration that you can play with, and I believe this is the strength of the strategy, as it can provide a single solution for different cases and scenarios.
My advice is to try and play with the different options for different markets based on the approach you want to implement and try turning features on/off and tuning them further.
TTS SETTINGS (NEEDED IF USED TO BACKTEST WITH TTS):
The TempalteTradingStrategy is a strategy script developed in Pine by jason5480, which I recommend for quick turn-around of testing different ideas on a proven and tested framework
I cannot give enough credit to the developer for the efforts put in building of the infrastructure, so I advice everyone that wants to use it first to get familiar with the concept and by checking
by checking jason5480's profile www.tradingview.com
The TTS itself is extremely functional and have a lot of properties, so its functionality is beyond the scope of the current script -
Again, I strongly recommend to be thoroughly explored by everyone that plans on using it.
In the nutshell it is a script that can be feed with buy/sell signals from an external indicator script and based on many configuration options it can determine how to execute the trades.
The TTS has many settings that can be applied, so below I will cover only the ones that differ from the default ones, at least according to my testing - do your own research, you may find something even better :)
The current/latest version that I've been using as of writing and testing this script is TTSv48
Settings which differ from the default ones:
Deal Conditions Mode - External (take enter/exit conditions from an external script)
🔌Signal 🛈➡ - BreakoutTrendFollowing: 🔌Signal to TTS (this is the output from the indicator script, according to the TTS convention)
Order Type - STOP (perform stop order)
Distance Method - HHLL (HigherHighLowerLow - in order to set the SL according to the strategy definition from above)
The next are just personal preferences, you can feel free to experiment according to your trading style
Take Profit Targets - 0 (either 100% in or out, no incremental stepping in or out of positions)
Dist Mul|Len Long/Short- 10 (make sure that we don't close on profitable trades by any reason)
Quantity Method - EQUITY (personal backtesting preference is to consider each backtest as a separate portfolio, so determine the position size by 100% of the allocated equity size)
Equity % - 100 (note above)
Adaptive Candlestick Pattern Recognition System█ INTRODUCTION
Nearly three years in the making, intermittently worked on in the few spare hours of weekends and time off, this is a passion project I undertook to flesh out my skills as a computer programmer. This script currently recognizes 85 different candlestick patterns ranging from one to five candles in length. It also performs statistical analysis on those patterns to determine prior performance and changes the coloration of those patterns based on that performance. In searching TradingView's script library for scripts similar to this one, I had found a handful. However, when I reviewed the ones which were open source, I did not see many that truly captured the power of PineScrypt or leveraged the way it works to create efficient and reliable code; one of the main driving factors for releasing this 5,000+ line behemoth open sourced.
Please take the time to review this description and source code to utilize this script to its fullest potential.
█ CONCEPTS
This script covers the following topics: Candlestick Theory, Trend Direction, Higher Timeframes, Price Analysis, Statistic Analysis, and Code Design.
Candlestick Theory - This script focuses solely on the concept of Candlestick Theory: arrangements of candlesticks may form certain patterns that can potentially influence the future price action of assets which experience those patterns. A full list of patterns (grouped by pattern length) will be in its own section of this description. This script contains two modes of operation for identifying candlestick patterns, 'CLASSIC' and 'BREAKOUT'.
CLASSIC: In this mode, candlestick patterns will be identified whenever they appear. The user has a wide variety of inputs to manipulate that can change how certain patterns are identified and even enable alerts to notify themselves when these patterns appear. Each pattern selected to appear will have their Profit or Loss (P/L) calculated starting from the first candle open succeeding the pattern to a candle close specified some number of candles ahead. These P/L calculations are then collected for each pattern, and split among partitions of prior price action of the asset the script is currently applied to (more on that in Higher Timeframes ).
BREAKOUT: In this mode, P/L calculations are held off until a breakout direction has been confirmed. The user may specify the number of candles ahead of a pattern's appearance (from one to five) that a pattern has to confirm a breakout in either an upward or downward direction. A breakout is constituted when there is a candle following the appearance of the pattern that closes above/at the highest high of the pattern, or below/at its lowest low. Only then will percent return calculations be performed for the pattern that's been identified, and these percent returns are broken up not only by the partition they had appeared in but also by the breakout direction itself. Patterns which do not breakout in either direction will be ignored, along with having their labels deleted.
In both of these modes, patterns may be overridden. Overrides occur when a smaller pattern has been detected and ends up becoming one (or more) of the candles of a larger pattern. A key example of this would be the Bearish Engulfing and the Three Outside Down patterns. A Three Outside Down necessitates a Bearish Engulfing as the first two candles in it, while the third candle closes lower. When a pattern is overridden, the return for that pattern will no longer be tracked. Overrides will not occur if the tail end of a larger pattern occurs at the beginning of a smaller pattern (Ex: a Bullish Engulfing occurs on the third candle of a Three Outside Down and the candle immediately following that pattern, the Three Outside Down pattern will not be overridden).
Important Functionality Note: These patterns are only searched for at the most recently closed candle, not on the currently closing candle, which creates an offset of one for this script's execution. (SEE LIMITATIONS)
Trend Direction - Many of the patterns require a trend direction prior to their appearance. Noting TradingView's own publication of candlestick patterns, I utilize a similar method for determining trend direction. Moving Averages are used to determine which trend is currently taking place for candlestick patterns to be sought out. The user has access to two Moving Averages which they may individually modify the following for each: Moving Average type (list of 9), their length, width, source values, and all variables associated with two special Moving Averages (Least Squares and Arnaud Legoux).
There are 3 settings for these Moving Averages, the first two switch between the two Moving Averages, and the third uses both. When using individual Moving Averages, the user may select a 'price point' to compare against the Moving Average (default is close). This price point is compared to the Moving Average at the candles prior to the appearance of candle patterns. Meaning: The close compared to the Moving Average two candles behind determines the trend direction used for Candlestick Analysis of one candle patterns; three candles behind for two candle patterns and so on. If the selected price point is above the Moving Average, then the current trend is an 'uptrend', 'downtrend' otherwise.
The third setting using both Moving Averages will compare the lengths of each, and trend direction is determined by the shorter Moving Average compared to the longer one. If the shorter Moving Average is above the longer, then the current trend is an 'uptrend', 'downtrend' otherwise. If the lengths of the Moving Averages are the same, or both Moving Averages are Symmetrical, then MA1 will be used by default. (SEE LIMITATIONS)
Higher Timeframes - This script employs the use of Higher Timeframes with a few request.security calls. The purpose of these calls is strictly for the partitioning of an asset's chart, splitting the returns of patterns into three separate groups. The four inputs in control of this partitioning split the chart based on: A given resolution to grab values from, the length of time in that resolution, and 'Upper' and 'Lower Limits' which split the trading range provided by that length of time in that resolution that forms three separate groups. The default values for these four inputs will partition the current chart by the yearly high-low range where: the 'Upper' partition is the top 20% of that trading range, the 'Middle' partition is 80% to 33% of the trading range, and the 'Lower' partition covers the trading range within 33% of the yearly low.
Patterns which are identified by this script will have their returns grouped together based on which partition they had appeared in. For example, a Bullish Engulfing which occurs within a third of the yearly low will have its return placed separately from a Bullish Engulfing that occurred within 20% of the yearly high. The idea is that certain patterns may perform better or worse depending on when they had occurred during an asset's trading range.
Price Analysis - Price Analysis is a major part of this script's functionality as it can fundamentally change how patterns are shown to the user. The settings related to Price Analysis include setting the number of candles ahead of a pattern's appearance to determine the return of that pattern. In 'BREAKOUT' mode, an additional setting allows the user to specify where the P/L calculation will begin for a pattern that had appeared and confirmed. (SEE LIMITATIONS)
The calculation for percent returns of patterns is illustrated with the following pseudo-code (CLASSIC mode, this is a simplified version of the actual code):
type patternObj
int ID
int partition
type returnsArray
float returns
// No pattern found = na returned
patternObj TEST_VAL = f_FindPattern()
priorTestVal = TEST_VAL
if not na( priorTestVal )
pnlMatrixRow = priorTestVal.ID
pnlMatrixCol = priorTestVal.partition
matrixReturn = matrix.get(PERCENT_RETURNS, pnlMatrixRow, pnlMatrixCol)
percentReturn = ( (close - open ) / open ) * 100%
array.push(matrixReturn.returns, percentReturn)
Statistic Analysis - This script uses Pine's built-in array functions to conduct the Statistic Analysis for patterns. When a pattern is found and its P/L calculation is complete, its return is added to a 'Return Array' User-Defined-Type that contains numerous fields which retain information on a pattern's prior performance. The actual UDT is as follows:
type returnArray
float returns = na
int size = 0
float avg = 0
float median = 0
float stdDev = 0
int polarities = na
All values within this UDT will be updated when a return is added to it (some based on user input). The array.avg , array.median and array.stdev will be ran and saved into their respective fields after a return is placed in the 'returns' array. The 'polarities' integer array is what will be changed based on user input. The user specifies two different percentages that declare 'Positive' and 'Negative' returns for patterns. When a pattern returns above, below, or in between these two values, different indices of this array will be incremented to reflect the kind of return that pattern had just experienced.
These values (plus the full name, partition the pattern occurred in, and a 95% confidence interval of expected returns) will be displayed to the user on the tooltip of the labels that identify patterns. Simply scroll over the pattern label to view each of these values.
Code Design - Overall this script is as much of an art piece as it is functional. Its design features numerous depictions of ASCII Art that illustrate what is being attempted by the functions that identify patterns, and an incalculable amount of time was spent rewriting portions of code to improve its efficiency. Admittedly, this final version is nearly 1,000 lines shorter than a previous version (one which took nearly 30 seconds after compilation to run, and didn't do nearly half of what this version does). The use of UDTs, especially the 'patternObj' one crafted and redesigned from the Hikkake Hunter 2.0 I published last month, played a significant role in making this script run efficiently. There is a slight rigidity in some of this code mainly around pattern IDs which are responsible for displaying the abbreviation for patterns (as well as the full names under the tooltips, and the matrix row position for holding returns), as each is hard-coded to correspond to that pattern.
However, one thing I would like to mention is the extensive use of global variables for pattern detection. Many scripts I had looked over for ideas on how to identify candlestick patterns had the same idea; break the pattern into a set of logical 'true/false' statements derived from historically referencing candle OHLC values. Some scripts which identified upwards of 20 to 30 patterns would reference Pine's built-in OHLC values for each pattern individually, potentially requesting information from TradingView's servers numerous times that could easily be saved into a variable for re-use and only requested once per candle (what this script does).
█ FEATURES
This script features a massive amount of switches, options, floating point values, detection settings, and methods for identifying/tailoring pattern appearances. All modifiable inputs for patterns are grouped together based on the number of candles they contain. Other inputs (like those for statistics settings and coloration) are grouped separately and presented in a way I believe makes the most sense.
Not mentioned above is the coloration settings. One of the aims of this script was to make patterns visually signify their behavior to the user when they are identified. Each pattern has its own collection of returns which are analyzed and compared to the inputs of the user. The user may choose the colors for bullish, neutral, and bearish patterns. They may also choose the minimum number of patterns needed to occur before assigning a color to that pattern based on its behavior; a color for patterns that have not met this minimum number of occurrences yet, and a color for patterns that are still processing in BREAKOUT mode.
There are also an additional three settings which alter the color scheme for patterns: Statistic Point-of-Reference, Adaptive coloring, and Hard Limiting. The Statistic Point-of-Reference decides which value (average or median) will be compared against the 'Negative' and 'Positive Return Tolerance'(s) to guide the coloration of the patterns (or for Adaptive Coloring, the generation of a color gradient).
Adaptive Coloring will have this script produce a gradient that patterns will be colored along. The more bullish or bearish a pattern is, the further along the gradient those patterns will be colored starting from the 'Neutral' color (hard lined at the value of 0%: values above this will be colored bullish, bearish otherwise). When Adaptive Coloring is enabled, this script will request the highest and lowest values (these being the Statistic Point-of-Reference) from the matrix containing all returns and rewrite global variables tied to the negative and positive return tolerances. This means that all patterns identified will be compared with each other to determine bullish/bearishness in Adaptive Coloring.
Hard Limiting will prevent these global variables from being rewritten, so patterns whose Statistic Point-of-Reference exceed the return tolerances will be fully colored the bullish or bearish colors instead of a generated gradient color. (SEE LIMITATIONS)
Apart from the Candle Detection Modes (CLASSIC and BREAKOUT), there's an additional two inputs which modify how this script behaves grouped under a "MASTER DETECTION SETTINGS" tab. These two "Pattern Detection Settings" are 'SWITCHBOARD' and 'TARGET MODE'.
SWITCHBOARD: Every single pattern has a switch that is associated with its detection. When a switch is enabled, the code which searches for that pattern will be run. With the Pattern Detection Setting set to this, all patterns that have their switches enabled will be sought out and shown.
TARGET MODE: There is an additional setting which operates on top of 'SWITCHBOARD' that singles out an individual pattern the user specifies through a drop down list. The names of every pattern recognized by this script will be present along with an identifier that shows the number of candles in that pattern (Ex: " (# candles)"). All patterns enabled in the switchboard will still have their returns measured, but only the pattern selected from the "Target Pattern" list will be shown. (SEE LIMITATIONS)
The vast majority of other features are held in the one, two, and three candle pattern sections.
For one-candle patterns, there are:
3 — Settings related to defining 'Tall' candles:
The number of candles to sample for previous candle-size averages.
The type of comparison done for 'Tall' Candles: Settings are 'RANGE' and 'BODY'.
The 'Tolerance' for tall candles, specifying what percent of the 'average' size candles must exceed to be considered 'Tall'.
When 'Tall Candle Setting' is set to RANGE, the high-low ranges are what the current candle range will be compared against to determine if a candle is 'Tall'. Otherwise the candle bodies (absolute value of the close - open) will be compared instead. (SEE LIMITATIONS)
Hammer Tolerance - How large a 'discarded wick' may be before it disqualifies a candle from being a 'Hammer'.
Discarded wicks are compared to the size of the Hammer's candle body and are dependent upon the body's center position. Hammer bodies closer to the high of the candle will have the upper wick used as its 'discarded wick', otherwise the lower wick is used.
9 — Doji Settings, some pulled from an old Doji Hunter I made a while back:
Doji Tolerance - How large the body of a candle may be compared to the range to be considered a 'Doji'.
Ignore N/S Dojis - Turns off Trend Direction for non-special Dojis.
GS/DF Doji Settings - 2 Inputs that enable and specify how large wicks that typically disqualify Dojis from being 'Gravestone' or 'Dragonfly' Dojis may be.
4 Settings related to 'Long Wick Doji' candles detailed below.
A Tolerance for 'Rickshaw Man' Dojis specifying how close the center of the body must be to the range to be valid.
The 4 settings the user may modify for 'Long Legged' Dojis are: A Sample Base for determining the previous average of wicks, a Sample Length specifying how far back to look for these averages, a Behavior Setting to define how 'Long Legged' Dojis are recognized, and a tolerance to specify how large in comparison to the prior wicks a Doji's wicks must be to be considered 'Long Legged'.
The 'Sample Base' list has two settings:
RANGE: The wicks of prior candles are compared to their candle ranges and the 'wick averages' will be what the average percent of ranges were in the sample.
WICKS: The size of the wicks themselves are averaged and returned for comparing against the current wicks of a Doji.
The 'Behavior' list has three settings:
ONE: Only one wick length needs to exceed the average by the tolerance for a Doji to be considered 'Long Legged'.
BOTH: Both wick lengths need to exceed the average of the tolerance of their respective wicks (upper wicks are compared to upper wicks, lower wicks compared to lower) to be considered 'Long Legged'.
AVG: Both wicks and the averages of the previous wicks are added together, divided by two, and compared. If the 'average' of the current wicks exceeds this combined average of prior wicks by the tolerance, then this would constitute a valid 'Long Legged' Doji. (For Dojis in general - SEE LIMITATIONS)
The final input is one related to candle patterns which require a Marubozu candle in them. The two settings for this input are 'INCLUSIVE' and 'EXCLUSIVE'. If INCLUSIVE is selected, any opening/closing variant of Marubozu candles will be allowed in the patterns that require them.
For two-candle patterns, there are:
2 — Settings which define 'Engulfing' parameters:
Engulfing Setting - Two options, RANGE or BODY which sets up how one candle may 'engulf' the previous.
Inclusive Engulfing - Boolean which enables if 'engulfing' candles can be equal to the values needed to 'engulf' the prior candle.
For the 'Engulfing Setting':
RANGE: If the second candle's high-low range completely covers the high-low range of the prior candle, this is recognized as 'engulfing'.
BODY: If the second candle's open-close completely covers the open-close of the previous candle, this is recognized as 'engulfing'. (SEE LIMITATIONS)
4 — Booleans specifying different settings for a few patterns:
One which allows for 'opens within body' patterns to let the second candle's open/close values match the prior candles' open/close.
One which forces 'Kicking' patterns to have a gap if the Marubozu setting is set to 'INCLUSIVE'.
And Two which dictate if the individual candles in 'Stomach' patterns need to be 'Tall'.
8 — Floating point values which affect 11 different patterns:
One which determines the distance the close of the first candle in a 'Hammer Inverted' pattern must be to the low to be considered valid.
One which affects how close the opens/closes need to be for all 'Lines' patterns (Bull/Bear Meeting/Separating Lines).
One that allows some leeway with the 'Matching Low' pattern (gives a small range the second candle close may be within instead of needing to match the previous close).
Three tolerances for On Neck/In Neck patterns (2 and 1 respectively).
A tolerance for the Thrusting pattern which give a range the close the second candle may be between the midpoint and close of the first to be considered 'valid'.
A tolerance for the two Tweezers patterns that specifies how close the highs and lows of the patterns need to be to each other to be 'valid'.
The first On Neck tolerance specifies how large the lower wick of the first candle may be (as a % of that candle's range) before the pattern is invalidated. The second tolerance specifies how far up the lower wick to the close the second candle's close may be for this pattern. The third tolerance for the In Neck pattern determines how far into the body of the first candle the second may close to be 'valid'.
For the remaining patterns (3, 4, and 5 candles), there are:
3 — Settings for the Deliberation pattern:
A boolean which forces the open of the third candle to gap above the close of the second.
A tolerance which changes the proximity of the third candle's open to the second candle's close in this pattern.
A tolerance that sets the maximum size the third candle may be compared to the average of the first two candles.
One boolean value for the Two Crows patterns (standard and Upside Gapping) that forces the first two candles in the patterns to completely gap if disabled (candle 1's close < candle 2's low).
10 — Floating point values for the remaining patterns:
One tolerance for defining how much the size of each candle in the Identical Black Crows pattern may deviate from the average of themselves to be considered valid.
One tolerance for setting how close the opens/closes of certain three candle patterns may be to each other's opens/closes.*
Three floating point values that affect the Three Stars in the South pattern.
One tolerance for the Side-by-Side patterns - looks at the second and third candle closes.
One tolerance for the Stick Sandwich pattern - looks at the first and third candle closes.
A floating value that sizes the Concealing Baby Swallow pattern's 3rd candle wick.
Two values for the Ladder Bottom pattern which define a range that the third candle's wick size may be.
* This affects the Three Black Crows (non-identical) and Three White Soldiers patterns, each require the opens and closes of every candle to be near each other.
The first tolerance of the Three Stars in the South pattern affects the first candle body's center position, and defines where it must be above to be considered valid. The second tolerance specifies how close the second candle must be to this same position, as well as the deviation the ratio the candle body to its range may be in comparison to the first candle. The third restricts how large the second candle range may be in comparison to the first (prevents this pattern from being recognized if the second candle is similar to the first but larger).
The last two floating point values define upper and lower limits to the wick size of a Ladder Bottom's fourth candle to be considered valid.
█ HOW TO USE
While there are many moving parts to this script, I attempted to set the default values with what I believed may help identify the most patterns within reasonable definitions. When this script is applied to a chart, the Candle Detection Mode (along with the BREAKOUT settings) and all candle switches must be confirmed before patterns are displayed. All switches are on by default, so this gives the user an opportunity to pick which patterns to identify first before playing around in the settings.
All of the settings/inputs described above are meant for experimentation. I encourage the user to tweak these values at will to find which set ups work best for whichever charts they decide to apply these patterns to.
Refer to the patterns themselves during experimentation. The statistic information provided on the tooltips of the patterns are meant to help guide input decisions. The breadth of candlestick theory is deep, and this was an attempt at capturing what I could in its sea of information.
█ LIMITATIONS
DISCLAIMER: While it may seem a bit paradoxical that this script aims to use past performance to potentially measure future results, past performance is not indicative of future results . Markets are highly adaptive and often unpredictable. This script is meant as an informational tool to show how patterns may behave. There is no guarantee that confidence intervals (or any other metric measured with this script) are accurate to the performance of patterns; caution must be exercised with all patterns identified regardless of how much information regarding prior performance is available.
Candlestick Theory - In the name, Candlestick Theory is a theory , and all theories come with their own limits. Some patterns identified by this script may be completely useless/unprofitable/unpredictable regardless of whatever combination of settings are used to identify them. However, if I truly believed this theory had no merit, this script would not exist. It is important to understand that this is a tool meant to be utilized with an array of others to procure positive (or negative, looking at you, short sellers ) results when navigating the complex world of finance.
To address the functionality note however, this script has an offset of 1 by default. Patterns will not be identified on the currently closing candle, only on the candle which has most recently closed. Attempting to have this script do both (offset by one or identify on close) lead to more trouble than it was worth. I personally just want users to be aware that patterns will not be identified immediately when they appear.
Trend Direction - Moving Averages - There is a small quirk with how MA settings will be adjusted if the user inputs two moving averages of the same length when the "MA Setting" is set to 'BOTH'. If Moving Averages have the same length, this script will default to only using MA 1 regardless of if the types of Moving Averages are different . I will experiment in the future to alleviate/reduce this restriction.
Price Analysis - BREAKOUT mode - With how identifying patterns with a look-ahead confirmation works, the percent returns for patterns that break out in either direction will be calculated on the same candle regardless of if P/L Offset is set to 'FROM CONFIRMATION' or 'FROM APPEARANCE'. This same issue is present in the Hikkake Hunter script mentioned earlier. This does not mean the P/L calculations are incorrect , the offset for the calculation is set by the number of candles required to confirm the pattern if 'FROM APPEARANCE' is selected. It just means that these two different P/L calculations will complete at the same time independent of the setting that's been selected.
Adaptive Coloring/Hard Limiting - Hard Limiting is only used with Adaptive Coloring and has no effect outside of it. If Hard Limiting is used, it is recommended to increase the 'Positive' and 'Negative' return tolerance values as a pattern's bullish/bearishness may be disproportionately represented with the gradient generated under a hard limit.
TARGET MODE - This mode will break rules regarding patterns that are overridden on purpose. If a pattern selected in TARGET mode would have otherwise been absorbed by a larger pattern, it will have that pattern's percent return calculated; potentially leading to duplicate returns being included in the matrix of all returns recognized by this script.
'Tall' Candle Setting - This is a wide-reaching setting, as approximately 30 different patterns or so rely on defining 'Tall' candles. Changing how 'Tall' candles are defined whether by the tolerance value those candles need to exceed or by the values of the candle used for the baseline comparison (RANGE/BODY) can wildly affect how this script functions under certain conditions. Refer to the tooltip of these settings for more information on which specific patterns are affected by this.
Doji Settings - There are roughly 10 or so two to three candle patterns which have Dojis as a part of them. If all Dojis are disabled, it will prevent some of these larger patterns from being recognized. This is a dependency issue that I may address in the future.
'Engulfing' Setting - Functionally, the two 'Engulfing' settings are quite different. Because of this, the 'RANGE' setting may cause certain patterns that would otherwise be valid under textbook and online references/definitions to not be recognized as such (like the Upside Gap Two Crows or Three Outside down).
█ PATTERN LIST
This script recognizes 85 patterns upon initial release. I am open to adding additional patterns to it in the future and any comments/suggestions are appreciated. It recognizes:
15 — 1 Candle Patterns
4 Hammer type patterns: Regular Hammer, Takuri Line, Shooting Star, and Hanging Man
9 Doji Candles: Regular Dojis, Northern/Southern Dojis, Gravestone/Dragonfly Dojis, Gapping Up/Down Dojis, and Long-Legged/Rickshaw Man Dojis
White/Black Long Days
32 — 2 Candle Patterns
4 Engulfing type patterns: Bullish/Bearish Engulfing and Last Engulfing Top/Bottom
Dark Cloud Cover
Bullish/Bearish Doji Star patterns
Hammer Inverted
Bullish/Bearish Haramis + Cross variants
Homing Pigeon
Bullish/Bearish Kicking
4 Lines type patterns: Bullish/Bearish Meeting/Separating Lines
Matching Low
On/In Neck patterns
Piercing pattern
Shooting Star (2 Lines)
Above/Below Stomach patterns
Thrusting
Tweezers Top/Bottom patterns
Two Black Gapping
Rising/Falling Window patterns
29 — 3 Candle Patterns
Bullish/Bearish Abandoned Baby patterns
Advance Block
Collapsing Doji Star
Deliberation
Upside/Downside Gap Three Methods patterns
Three Inside/Outside Up/Down patterns (4 total)
Bullish/Bearish Side-by-Side patterns
Morning/Evening Star patterns + Doji variants
Stick Sandwich
Downside/Upside Tasuki Gap patterns
Three Black Crows + Identical variation
Three White Soldiers
Three Stars in the South
Bullish/Bearish Tri-Star patterns
Two Crows + Upside Gap variant
Unique Three River Bottom
3 — 4 Candle Patterns
Concealing Baby Swallow
Bullish/Bearish Three Line Strike patterns
6 — 5 Candle Patterns
Bullish/Bearish Breakaway patterns
Ladder Bottom
Mat Hold
Rising/Falling Three Methods patterns
█ WORKS CITED
Because of the amount of time needed to complete this script, I am unable to provide exact dates for when some of these references were used. I will also not provide every single reference, as citing a reference for each individual pattern and the place it was reviewed would lead to a bibliography larger than this script and its description combined. There were five major resources I used when building this script, one book, two websites (for various different reasons including patterns, moving averages, and various other articles of information), various scripts from TradingView's public library (including TradingView's own source code for *all* candle patterns ), and PineScrypt's reference manual.
Bulkowski, Thomas N. Encyclopedia of Candlestick Patterns . Hoboken, New Jersey: John Wiley & Sons Inc., 2008. E-book (google books).
Various. Numerous webpages. CandleScanner . 2023. online. Accessed 2020 - 2023.
Various. Numerous webpages. Investopedia . 2023. online. Accessed 2020 - 2023.
█ AKNOWLEDGEMENTS
I want to take the time here to thank all of my friends and family, both online and in real life, for the support they've given me over the last few years in this endeavor. My pets who tried their hardest to keep me from completing it. And work for the grit to continue pushing through until this script's completion.
This belongs to me just as much as it does anyone else. Whether you are an institutional trader, gold bug hedging against the dollar, retail ape who got in on a squeeze, or just parents trying to grow their retirement/save for the kids. This belongs to everyone.
Private Beta for new features to be tested can be found here .
Vires In Numeris
ICT Concepts [LuxAlgo]The ICT Concepts indicator regroups core concepts highlighted by trader and educator "The Inner Circle Trader" (ICT) into an all-in-one toolkit. Features include Market Structure (MSS & BOS), Order Blocks, Imbalances, Buyside/Sellside Liquidity, Displacements, ICT Killzones, and New Week/Day Opening Gaps.
🔶 SETTINGS
🔹 Mode
When Present is selected, only data of the latest 500 bars are used/visualized, except for NWOG/NDOG
🔹 Market Structure
Enable/disable Market Structure.
Length: will set the lookback period/sensitivity.
In Present Mode only the latest Market Structure trend will be shown, while in Historical Mode, previous trends will be shown as well:
You can toggle MSS/BOS separately and change the colors:
🔹 Displacement
Enable/disable Displacement.
🔹 Volume Imbalance
Enable/disable Volume Imbalance.
# Visible VI's: sets the amount of visible Volume Imbalances (max 100), color setting is placed at the side.
🔹 Order Blocks
Enable/disable Order Blocks.
Swing Lookback: Lookback period used for the detection of the swing points used to create order blocks.
Show Last Bullish OB: Number of the most recent bullish order/breaker blocks to display on the chart.
Show Last Bearish OB: Number of the most recent bearish order/breaker blocks to display on the chart.
Color settings.
Show Historical Polarity Changes: Allows users to see labels indicating where a swing high/low previously occurred within a breaker block.
Use Candle Body: Allows users to use candle bodies as order block areas instead of the full candle range.
Change in Order Blocks style:
🔹 Liquidity
Enable/disable Liquidity.
Margin: sets the sensitivity, 2 points are fairly equal when:
'point 1' < 'point 2' + (10 bar Average True Range / (10 / margin)) and
'point 1' > 'point 2' - (10 bar Average True Range / (10 / margin))
# Visible Liq. boxes: sets the amount of visible Liquidity boxes (max 50), this amount is for Sellside and Buyside boxes separately.
Colour settings.
Change in Liquidity style:
🔹 Fair Value Gaps
Enable/disable FVG's.
Balance Price Range: this is the overlap of latest bullish and bearish Fair Value Gaps.
By disabling Balance Price Range only FVGs will be shown.
Options: Choose whether you wish to see FVG or Implied Fair Value Gaps (this will impact Balance Price Range as well)
# Visible FVG's: sets the amount of visible FVG's (max 20, in the same direction).
Color settings.
Change in FVG style:
🔹 NWOG/NDOG
Enable/disable NWOG; color settings; amount of NWOG shown (max 50).
Enable/disable NDOG ; color settings; amount of NDOG shown (max 50).
🔹 Fibonacci
This tool connects the 2 most recent bullish/bearish (if applicable) features of your choice, provided they are enabled.
3 examples (FVG, BPR, OB):
Extend lines -> Enabled (example OB):
🔹 Killzones
Enable/disable all or the ones you need.
Time settings are coded in the corresponding time zones.
🔶 USAGE
By default, the indicator displays each feature relevant to the most recent price variations in order to avoid clutter on the chart & to provide a very similar experience to how a user would contruct ICT Concepts by hand.
Users can use the historical mode in the settings to see historical market structure/imbalances. The ICT Concepts indicator has various use cases, below we outline many examples of how a trader could find usage of the features together.
In the above image we can see price took out Sellside liquidity, filled two bearish FVGs, a market structure shift, which then led to a clean retest of a bullish FVG as a clean setup to target the order block above.
Price then fills the OB which creates a breaker level as seen in yellow.
Broken OBs can be useful for a trader using the ICT Concepts indicator as it marks a level where orders have now been filled, indicating a solidified level that has proved itself as an area of liquidity. In the image above we can see a trade setup using a broken bearish OB as a potential entry level.
We can see the New Week Opening Gap (NWOG) above was an optimal level to target considering price may tend to fill / react off of these levels according to ICT.
In the next image above, we have another example of various use cases where the ICT Concepts indicator hypothetically allow traders to find key levels & find optimal entry points using market structure.
In the image above we can see a bearish Market Structure Shift (MSS) is confirmed, indicating a potential trade setup for targeting the Balanced Price Range imbalance (BPR) below with a stop loss above the buyside liquidity.
Although what we are demonstrating here is a hindsight example, it shows the potential usage this toolkit gives you for creating trading plans based on ICT Concepts.
Same chart but playing out the history further we can see directly after price came down to the Sellside liquidity & swept below it...
Then by enabling IFVGs in the settings, we can see the IFVG retests alongside the Sellside & Buyside liquidity acting in confluence.
Which allows us to see a great bullish structure in the market with various key levels for potential entries.
Here we can see a potential bullish setup as price has taken out a previous Sellside liquidity zone and is now retesting a NWOG + Volume Imbalance.
Users also have the option to display Fibonacci retracements based on market structure, order blocks, and imbalance areas, which can help place limit/stop orders more effectively as well as finding optimal points of interest beyond what the primary ICT Concepts features can generate for a trader.
In the above image we can see the Fibonacci extension was selected to be based on the NWOG giving us some upside levels above the buyside liquidity.
🔶 DETAILS
Each feature within the ICT Concepts indicator is described in the sub sections below.
🔹 Market Structure
Market structure labels are constructed from price breaking a prior swing point. This allows a user to determine the current market trend based on the price action.
There are two types of Market Structure labels included:
Market Structure Shift (MSS)
Break Of Structure (BOS)
A MSS occurs when price breaks a swing low in an uptrend or a swing high in a downtrend, highlighting a potential reversal. This is often labeled as "CHoCH", but ICT specifies it as MSS.
On the other hand, BOS labels occur when price breaks a swing high in an uptrend or a swing low in a downtrend. The occurrence of these particular swing points is caused by retracements (inducements) that highlights liquidity hunting in lower timeframes.
🔹 Order Blocks
More significant market participants (institutions) with the ability of placing large orders in the market will generally place a sequence of individual trades spread out in time. This is referred as executing what is called a "meta-order".
Order blocks highlight the area where potential meta-orders are executed. Bullish order blocks are located near local bottoms in an uptrend while bearish order blocks are located near local tops in a downtrend.
When price mitigates (breaks out) an order block, a breaker block is confirmed. We can eventually expect price to trade back to this breaker block offering a new trade opportunity.
🔹 Buyside & Sellside Liquidity
Buyside / Sellside liquidity levels highlight price levels where market participants might place limit/stop orders.
Buyside liquidity levels will regroup the stoploss orders of short traders as well as limit orders of long traders, while Sellside liquidity levels will regroup the stoploss orders of long traders as well as limit orders of short traders.
These levels can play different roles. More informed market participants might view these levels as source of liquidity, and once liquidity over a specific level is reduced it will be found in another area.
🔹 Imbalances
Imbalances highlight disparities between the bid/ask, these can also be defined as inefficiencies, which would suggest that not all available information is reflected by the price and would as such provide potential trading opportunities.
It is common for price to "rebalance" and seek to come back to a previous imbalance area.
ICT highlights multiple imbalance formations:
Fair Value Gaps: A three candle formation where the candle shadows adjacent to the central candle do not overlap, this highlights a gap area.
Implied Fair Value Gaps: Unlike the fair value gap the implied fair value gap has candle shadows adjacent to the central candle overlapping. The gap area is constructed from the average between the respective shadow and the nearest extremity of their candle body.
Balanced Price Range: Balanced price ranges occur when a fair value gap overlaps a previous fair value gap, with the overlapping area resulting in the imbalance area.
Volume Imbalance: Volume imbalances highlight gaps between the opening price and closing price with existing trading activity (the low/high overlap the previous high/low).
Opening Gap: Unlike volume imbalances opening gaps highlight areas with no trading activity. The low/high does not reach previous high/low, highlighting a "void" area.
🔹 Displacement
Displacements are scenarios where price forms successive candles of the same sentiment (bullish/bearish) with large bodies and short shadows.
These can more technically be identified by positive auto correlation (a close to open change is more likely to be followed by a change of the same sign) as well as volatility clustering (large changes are followed by large changes).
Displacements can be the cause for the formation of imbalances as well as market structure, these can be caused by the full execution of a meta order.
🔹 Kill Zones
Killzones represent different time intervals that aims at offering optimal trade entries. Killzones include:
- New York Killzone (7:9 ET)
- London Open Killzone (2:5 ET)
- London Close Killzone (10:12 ET)
- Asian Killzone (20:00 ET)
🔶 Conclusion & Supplementary Material
This script aims to emulate how a trader would draw each of the covered features on their chart in the most precise representation to how it's actually taught by ICT directly.
There are many parallels between ICT Concepts and Smart Money Concepts that we released in 2022 which has a more general & simpler usage:
ICT Concepts, however, is more specifically aligned toward the community's interpretation of how to analyze price 'based on ICT', rather than displaying features to have a more classic interpretation for a technical analyst.
Lex_3CR_Functions_Library2Library "Lex_3CR_Functions_Library2"
This is a source code for a technical analysis library in Pine Script language,
designed to identify and mark Bullish and Bearish Three Candle Reversal (3CR) chart patterns.
The library provides three functions to be used in a trading algorithm.
The first function, Bull_3crMarker, adds a dashed line and label to a Bullish 3CR chart pattern, indicating the 3CR point.
The second function, Bear_3crMarker, adds a dashed line and label to a Bearish 3CR chart pattern.
The third function, Bull_3CRlogicals, checks for a Bullish 3CR pattern where the first candle's low is greater than the second candle's low and the second candle's low is less than the third candle's low.
If found, creates a line at the breakout point and a label at the fail point,
if specified. All functions take parameters such as the chart pattern's characteristics and output colors, labels, and markers.
Bull_3crMarker(bulllinearray, barnum, breakpoint, failpointB, failpoint, linecolorbull, bulllabelarray, labelcolor, textcolor, labelon)
Bull_3crMarker Adds a 3CR marker to a Bullish 3CR chart pattern
@description Adds a dashed line and label to a 3CR up chart pattern, indicating the 3CR (3 Candle Reversal) point.
Parameters:
bulllinearray (line )
barnum (int)
breakpoint (float)
failpointB (float )
failpoint (float)
linecolorbull (color)
bulllabelarray (label )
labelcolor (color)
textcolor (color)
labelon (bool)
Bear_3crMarker(bearlinearray, barnum, breakpoint, failpointB, failpoint, linecolorbear, bearlabelarray, labelcolor, textcolor, labelon)
Bear_3crMarker Adds a 3CR marker to a Bearish 3CR chart pattern
@description Adds a dashed line and label to a 3CR down chart pattern, indicating the 3CR (3 Candle Reversal) point.
Parameters:
bearlinearray (line )
barnum (int)
breakpoint (float)
failpointB (float )
failpoint (float)
linecolorbear (color)
bearlabelarray (label )
labelcolor (color)
textcolor (color)
labelon (bool)
Bull_3CRlogicals(low1, low2, low3, bulllinearray, bulllabelarray, failpointB, linecolorbull, labelcolor, textcolor, labelon)
Checks for a bullish three candle reversal pattern and creates a line and label at the breakout point if found
@description Checks for a bullish three candle reversal pattern where the first candle's low is greater than the second candle's low and the second candle's low is less than the third candle's low. If found, creates a line at the breakout point and a label at the fail point, if specified.
Parameters:
low1 (float)
low2 (float)
low3 (float)
bulllinearray (line )
bulllabelarray (label )
failpointB (float )
linecolorbull (color)
labelcolor (color)
textcolor (color)
labelon (bool)
Bear_3CRlogicals(high1, high2, high3, bearlinearray, bearlabelarray, failpointB, linecolorbear, labelcolor, textcolor, labelon)
Checks for a Bearish 3CR pattern and draws a bearish marker on the chart at the appropriate location
@description This function checks for a Bearish 3CR (Three-Candle Reversal) pattern, which is defined as the second candle having a higher high than the first and third candles, and the third candle having a lower high than the first candle. If the pattern is detected, a bearish marker is drawn on the chart at the appropriate location, and an optional label can be added to the marker.
Parameters:
high1 (float)
high2 (float)
high3 (float)
bearlinearray (line )
bearlabelarray (label )
failpointB (float )
linecolorbear (color)
labelcolor (color)
textcolor (color)
labelon (bool)
bullLineDelete(i, bulllinearray, failarray, bulllabelarray, labelon)
Removes a bullish line from a specified position in a line array, and optionally removes a label associated with that line
@description Removes a bullish line from a specified position in a line array, and optionally removes a label associated with that line.
Parameters:
i (int)
bulllinearray (line )
failarray (float )
bulllabelarray (label )
labelon (bool)
bearLineDelete(i, bearlinearray, failarray, bearlabelarray, labelon)
Removes a bearish line from a specified position in a line array, and optionally removes a label associated with that line
@description Removes a bearish line from a specified position in a line array, and optionally removes a label associated with that line.
Parameters:
i (int)
bearlinearray (line )
failarray (float )
bearlabelarray (label )
labelon (bool)
bulloffsetdelete(i, bulllinearray, failarray, bulllabelarray, labelon)
Removes a bullish line from a specified position in a line array, and optionally removes a label associated with that line
@description Removes a bullish line from a specified position in a line array, and optionally removes a label associated with that line.
Parameters:
i (int)
bulllinearray (line )
failarray (float )
bulllabelarray (label )
labelon (bool)
bearoffsetdelete(i, bearlinearray, failarray, bearlabelarray, labelon)
Removes a bearish line from a specified position in a line array, and optionally removes a label associated with that line
@description Removes a bearish line from a specified position in a line array, and optionally removes a label associated with that line.
Parameters:
i (int)
bearlinearray (line )
failarray (float )
bearlabelarray (label )
labelon (bool)
BullEntry_setter(i, bulllinearray, failpointB, entrystopB, entryB, entryboolB)
Checks if the specified value is greater than the break point of any bullish line in an array, and removes that line if true
@description Checks if the s pecified value is greater than the break point of any bullish line in an array, and removes that line if true.
Parameters:
i (int)
bulllinearray (line )
failpointB (float )
entrystopB (float )
entryB (float )
entryboolB (bool )
Bull3CRchecker(close1, bulllinearray, FailpointB, rsiB, bulllabelarray, labelt, bullcolored, directionarray, rsi, secondbullline, entrystopB, entryB, entryboolB)
Parameters:
close1 (float)
bulllinearray (line )
FailpointB (float )
rsiB (float )
bulllabelarray (label )
labelt (bool)
bullcolored (color)
directionarray (label )
rsi (float)
secondbullline (line )
entrystopB (float )
entryB (float )
entryboolB (bool )
Bear3CRchecker(close1, bearlinearray, FailpointB, bearlabelarray, labelt, bearcolored, directionarray, rsi, secondbearline, rsiB)
Checks if the specified value is less than the break point of any bearish line in an array, and removes that line if true
@description Checks if the specified value is less than the break point of any bearish line in an array, and removes that line if true.
Parameters:
close1 (float)
bearlinearray (line )
FailpointB (float )
bearlabelarray (label )
labelt (bool)
bearcolored (color)
directionarray (label )
rsi (float)
secondbearline (line )
rsiB (float )
Bulloffsetcheck(FailpointB, bulllabelarray, linearray, labelt, offset)
Checks the offset of bullish lines and deletes them if they are beyond a certain offset from the current bar index
@description Checks the offset of bullish lines and deletes them if they are beyond a certain offset from the current bar index
Parameters:
FailpointB (float )
bulllabelarray (label )
linearray (line )
labelt (bool)
offset (int)
Bearoffsetcheck(FailpointB, bearlabelarray, linearray, labelt, offset)
Checks the offset of bearish lines and deletes them if they are beyond a certain offset from the current bar index
@description Checks the offset of bearish lines and deletes them if they are beyond a certain offset from the current bar index
Parameters:
FailpointB (float )
bearlabelarray (label )
linearray (line )
labelt (bool)
offset (int)
Bullfailchecker(close1, FailpointB, bulllabelarray, linearray, labelt)
Checks if the current price has crossed above a bullish fail point and deletes the corresponding line and label
@description Checks if the current price has crossed above a bullish fail point and deletes the corresponding line and label
Parameters:
close1 (float)
FailpointB (float )
bulllabelarray (label )
linearray (line )
labelt (bool)
Bearfailchecker(close1, FailpointB, bearlabelarray, linearray, labelt)
Checks for bearish lines that have failed to trigger and removes them from the chart
@description This function checks for bearish lines that have failed to trigger (i.e., where the current price is above the fail point) and removes them from the chart along with any associated label.
Parameters:
close1 (float)
FailpointB (float )
bearlabelarray (label )
linearray (line )
labelt (bool)
rsibullchecker(rsiinput, rsiBull, secondbullline)
Checks for bullish RSI lines that have failed to trigger and removes them from the chart
@description This function checks for bullish RSI lines that have failed to trigger (i.e., where the current RSI value is below the line's trigger level) and removes them from the chart along with any associated line.
Parameters:
rsiinput (float)
rsiBull (float )
secondbullline (line )
rsibearchecker(rsiinput, rsiBear, secondbearline)
Checks for bearish RSI lines that have failed to trigger and removes them from the chart
@description This function checks for bearish RSI lines that have failed to trigger (i.e., where the current RSI value is above the line's trigger level) and removes them from the chart along with any associated line.
Parameters:
rsiinput (float)
rsiBear (float )
secondbearline (line )
Trap Trading - SwaGThis is an intraday indicator
Set timeframe to 5 min
Take long entry on the high brakes of selling traps
Take short entry on the low brakes of buying traps
ignore traps left to red zones
Use the nearest trap
take profit/loss on a 1:2 risk-to-reward basis.
Trap Trading
Trap trading is a trading strategy that seeks to profit from false breakouts in financial markets. This strategy is based on the idea that when the market breaks through a key level of support or resistance, many traders will take that as a signal to enter or exit trades, causing the price to move further in the breakout direction.
However, in some cases, the market will quickly reverse course and move in the opposite direction, trapping those traders who entered the trade based on the breakout. This can create a trading opportunity for those who are able to identify the false breakout and trade in the opposite direction.
The trap trading strategy typically involves identifying a key level of support or resistance on a price chart and then waiting for the market to break through that level. If the price continues to move in the breakout direction, the trader may enter a trade in that direction with a stop loss set just below the breakout level.
However, if the market quickly reverses and moves back below the breakout level, the trader may enter a trade in the opposite direction with a stop loss set just above the breakout level. The idea is to take advantage of the trapped traders who entered the trade based on the false breakout, and profit from the market's reversal.
As with any trading strategy, there are risks and potential drawbacks to trap trading. False breakouts can be difficult to identify, and there is always the risk that the market will continue to move in the breakout direction, resulting in losses for the trader. Additionally, trap trading requires a solid understanding of technical analysis and market trends, which may take time and experience to develop.
Band-Zigzag Based Trend FollowerWe defined new method to derive zigzag last month - which is called Channel-Based-Zigzag . This script is an example of one of the use case of this method.
🎲 Trend Following
Defining a trend following method is simple. Basic rule of trend following is Buy High and Sell Low (Yes, you heard it right). To explain further - methodology involve finding an established trend which is flying high and join the trend with proper risk and optimal stop. Once you get into the trade, you will not exit unless there is change in the trend. Or in other words, the parameters which you used to define trend has reversed and the trend is not valid anymore.
Few examples are:
🎯 Using bands
When price breaks out of upper bands (example, Bollinger Band, Keltener Channel, or Donchian Channel), with a pre determined length and multiplier, we can consider the trend to be bullish and similarly when price breaks down the lower band, we can consider the trend to be bearish.
Here are few examples where I have used bands for identifying trend
Band-Based-Supertrend
Donchian-Channel-Trend-Filter
🎯 Using Pivots
Simple logic using zigzag or pivot points is that when price starts making higher highs and higher lows, we can consider this as uptrend. And when price starts making lower highs and lower lows, we can consider this as downtrend. There are few supertrend implementations I have published in the past based on zigzags and pivot points.
Adoptive-Supertrend-Pivots
Zigzag-Supertrend
Drawbacks of both of these methods is that there will be too many fluctuations in both cases unless we increase the reference length. And if we increase the reference length, we will have higher drawdown.
🎲 Band Based Zigzag Method
Band Based Zigzag will help overcome these issues by combining both the methods.
Here we use bands to define our pivot high and pivot low - this makes sure that we are identifying trend only on breakouts as pivots are only formed on breakouts.
Our method also includes pivot ratio to cross over 1.0 to be able to consider it as trend. This means, we are waiting for price also to make new high high or lower low before making the decision on trend. But, this helps us ignore smaller pivot movements due to the usage of bands.
I have also implemented few tricks such as sticky bands (Bands will not contract unless there is breakout) and Adaptive Bands (Band will not expand unless price is moving in the direction of band). This makes the trend following method very robust.
To avoid fakeouts, we also use percentB of high/low in comparison with price retracement to define breakout.
🎲 The indicator
The output of indicator is simple and intuitive to understand.
🎯 Trend Criteria
Uptrend when last confirmed pivot is pivot high and has higher retracement ratio than PercentB of High. Else, considered as downtrend.
Downtrend when last confirmed pivot is pivot low and has higher retracement ratio than PercentB of High. Else, considered as uptrend.
🎯 Settings
Settings allow you to select the band type and parameters used for calculating zigzag and then trend. Also has few options to hide the display.
Kase Peak Oscillator w/ Divergences [Loxx]Kase Peak Oscillator is unique among first derivative or "rate-of-change" indicators in that it statistically evaluates over fifty trend lengths and automatically adapts to both cycle length and volatility. In addition, it replaces the crude linear mathematics of old with logarithmic and exponential models that better reflect the true nature of the market. Kase Peak Oscillator is unique in that it can be applied across multiple time frames and different commodities.
As a hybrid indicator, the Peak Oscillator also generates a trend signal via the crossing of the histogram through the zero line. In addition, the red/green histogram line indicates when the oscillator has reached an extreme condition. When the oscillator reaches this peak and then turns, it means that most of the time the market will turn either at the present extreme, or (more likely) at the following extreme.
This is both a reversal and breakout/breakdown indicator. Crosses above/below zero line can be used for breakouts/breakdowns, while the thick green/red bars can be used to detect reversals
The indicator consists of three indicators:
The PeakOscillator itself is rendered as a gray histogram.
Max is a red/green solid line within the histogram signifying a market extreme.
Yellow line is max peak value of two (by default, you can change this with the deviations input settings) standard deviations of the Peak Oscillator value
White line is the min peak value of two (by default, you can change this with the deviations input settings) standard deviations of the PeakOscillator value
The PeakOscillator is used two ways:
Divergence: Kase Peak Oscillator may be used to generate traditional divergence signals. The difference between it and traditional divergence indicators lies in its accuracy.
PeakOut: The second use is to look for a Peak Out. A Peak Out occurs when the histogram breaks beyond the PeakOut line and then pulls back. A Peak Out through the maximum line will be displayed magenta. A Peak Out, which only extends through the Peak Min line is called a local Peak Out, and is less significant than a normal Peak Out signal. These local Peak Outs are to be relied upon more heavily during sideways or corrective markets. Peak Outs may be based on either the maximum line or the minimum line. Maximum Peak Outs, however, are rarer and thus more significant than minimum Peak Outs. The magnitude of the price move may be greater following the maximum Peak Out, but the likelihood of the break in trend is essentially the same. Thus, our research indicates that we should react equally to a Peak Out in a trendy market and a Peak Min in a choppy or corrective market.
Included:
Bar coloring
Alerts
ALMA Trend-boxThis indicator uses the ALMA (Arnaud Legoux Moving Average) – a special type of moving average that provides a smoother and more responsive trend line. Based on the slope (angle) of the ALMA line and the price position relative to it, the indicator:
Colors candles in three different ways (to reflect market structure),
Plots the ALMA line on the chart,
Detects consolidation and highlights it with blue candles, background shading, and horizontal "box" lines.
📘 Candle Colors – How to Interpret Them
Candle Color Meaning Interpretation
🟩 Green Uptrend ALMA is sloping upward and price is above ALMA – look for buying opportunities.
🟥 Red Downtrend ALMA is sloping downward and price is below ALMA – look for selling opportunities.
🔵 Blue Sideways (Consolidation) Weak or neutral trend – market is moving sideways or accumulating.
🔵 What Do Blue Candles and the “Trend-box” Mean?
Blue candles represent consolidation periods, which occur when:
The slope of the ALMA line is less than ±40°, indicating a lack of strong trend,
The price behavior is not consistent with the direction of the slope (e.g., price is below ALMA even though ALMA is pointing upward).
During this time:
Blue candles and a blue background appear to visually highlight the consolidation,
Two dashed horizontal lines (a “box”) are drawn at the high and low of the consolidation range.
📌 The Trend-box helps you visually spot ranging markets, which often precede strong breakouts.
📈 How to Use This Indicator in Practice
Trend Following Strategy:
When candles are green → consider long trades.
When candles are red → consider short trades.
Use additional indicators (like RSI, MACD, or volume) to confirm entries.
Breakout Trading:
When blue candles and the box appear, wait for the price to:
Break above the box → potential long breakout.
Break below the box → potential short breakout.
You can set pending orders (buy stop/sell stop) just outside the box range.
Avoiding Choppy Entries:
Blue candles signal uncertainty – avoid entering impulsively during this time. Wait for trend confirmation.
⚙️ Adjustable Settings
ALMA Length – controls how quickly the moving average reacts.
Slope Threshold – determines the minimum angle required to define a trend.
Candle Colors – fully customizable (green/red/blue by default).
✅ Conclusion
ALMA Trend-box is a powerful visual tool for identifying:
Trending conditions (bullish or bearish),
Sideways markets (consolidation),
Breakout setups with clearly marked zones.
It works well on its own or as part of a larger trading system. Blue candles tell you to be patient, while transitions into green/red candles indicate developing trends.
Shooting Star ORB🧠 Indicator Name: "First Candle Shooting Star + ORB"
📌 Purpose
This indicator detects when the first candle of the day forms a Shooting Star pattern and then monitors for a breakout beyond its range. It visually marks the pattern and the breakout with boxes and provides real-time alerts and a status table.
🔍 What It Does Step-by-Step
1. 📅 Detects the Start of a New Trading Day
Uses ta.change(time("D")) to identify a new trading day.
When a new day starts, it checks if the very first candle of the session is a Shooting Star.
2. 🕯️ Identifies a Shooting Star Pattern
A candle is labeled a Shooting Star if:
It has a small body compared to the full candle range.
It has a long upper shadow at least 2× the body.
It has a short or tiny lower shadow.
All these criteria are adjustable through inputs.
3. 📦 Draws a Box for the First Candle Range
If a Shooting Star is found in the first candle of the day:
It draws a red shaded box covering the high and low of that candle.
The box visually marks the potential Opening Range.
4. 💥 Detects Breakout from Shooting Star Candle
After the first candle:
If price moves above or below the range by a specified % (like 1%), it flags a breakout.
A blue shaded box is drawn at the breakout candle for visual confirmation.
5. 🔔 Alerts
🔴 Shooting Star Detected: Alerts when the first candle is a shooting star.
🔵 Breakout Detected: Alerts when the price breaks out of the first candle’s range.
6. 📊 Displays Real-Time Info Table
A small table is shown on the chart:
🕯️ Pattern: “Shooting Star” or blank
💥 Breakout: “Yes” or “No”
⏱️ The timeframe being analyzed (e.g., “5” for 5-minute)
X OROverview
Designed to plot hourly opening ranges (ORs) on an intraday chart. It primarily serves as a trading tool for assessing market direction and potential trading opportunities by analyzing price action relative to key OHLC (Open, High, Low, Close) levels within each hourly range.
The code provided is for each hour sessions from 2:00 AM to 3:00 PM for a complete session-based framework. In addition there is the RTH open range
Purpose
The core purpose of this indicator is to:
✅ Define each hourly range (based on the session’s opening bar) by recording the high and low of that range.
✅ Extend this range into the following bars for visual reference — serving as dynamic support and resistance zones.
✅ Monitor price action relative to each hourly OR, helping traders evaluate market direction and structure trades using concepts like:
Breakouts above/below the OR high/low.
Rejections or consolidations within the OR.
Continuation or reversal signals tied to each OR.
Key Features
The script marks the first bar of the session as the OR session start.
During this bar, it initializes:
Opening price
Session high
Session low
These levels form the initial range.
🔹 Dynamic Range Tracking
Throughout the one-minute OR session:
The highest and lowest prices are updated in real time, capturing intra-hour volatility.
A visual background box is drawn to highlight the OR range on the chart.
🔹 Range Extension
The script defines an extended session period after the initial OR (e.g., 2:00 AM-2:45 AM for the 2:00 AM session).
During this extension period:
The box persists on the chart, providing a contextual zone that traders can use as a dynamic support/resistance area.
🔹 Visual Representation
Transparent colored boxes highlight each session’s OR visually on the chart.
These boxes help traders easily identify whether price is trading:
Inside the OR
Breaking above the high (potential bullish continuation)
Breaking below the low (potential bearish continuation)
Application in Trading
🔍 Trading the Opening Range Breakout
Traders often use the OR high and low as breakout triggers. For example:
A price break above the OR high may signal bullish momentum.
A break below the OR low may signal bearish momentum.
⚖️ Support and Resistance
Even if breakouts fail, the OR can act as a pivot zone — offering areas for:
Stop placements
Target levels
Entry confirmations for fade trades or mean reversion strategies.
🕒 Session Awareness
By defining each hour’s OR individually (from 2:00 AM to 3:00 PM), traders can:
Analyze price behavior within each session.
Recognize when liquidity or volatility increases (e.g. around overlapping sessions like London open or New York open).
Summary
This Pine Script indicator provides a powerful framework for visualizing and trading hourly opening ranges. It enhances intraday analysis by:
Structuring price action within hourly boxes.
Highlighting key price levels relative to OHLC concepts.
Helping traders make more informed decisions by assessing price behavior around these critical ranges.
Real Time Swing Trap DetectorThe Real Time Swing Trap Detector is a minimalist, pro-grade tool for instantly spotting classic “bull traps” and “bear traps” on any chart.
This indicator identifies swing traps in real time by tracking significant swing highs and lows, then watching for fast, false breakouts (bull traps) and breakdowns (bear traps) within a user-defined window.
How it works:
Detects when price breaks a major swing high/low (using configurable lookback).
If price quickly reclaims the broken level within X bars (trap window), a trap is confirmed and a subtle icon (🐂 for bull, 🐻 for bear) is displayed on the chart—no labels, no clutter.
You can enable/disable alerts for bull/bear traps individually or together, and receive notifications the moment a trap is detected.
Use cases:
Spot and avoid classic market “fakeouts” that trap breakout traders.
Confirm SMC/ICT “Judas swing” setups, or filter for high-probability reversals.
Works on all timeframes and assets: stocks, crypto, forex, indices.
Inputs:
Swing Lookback Bars: How far back to define swing points (default: 50)
Major Swing Filter: Additional filter for only the most significant highs/lows (default: 200)
Trap Bars (Look Ahead): Window in which a trap must be confirmed (default: 10)
Enable Bull/Bear Trap Alerts: Toggle real-time alerts for each trap type.
Visuals:
🐻 icon below bar for bear trap (short squeeze/reversal)
🐂 icon above bar for bull trap (long squeeze/reversal)
How to set up alerts:
Add the indicator to your chart, open TradingView’s Alerts panel, and choose “Bear Trap Alert,” “Bull Trap Alert,” or “Any Trap Alert” for instant notifications.
Candle/Keltner Channels BUY SELLWhy Use Candlesticks?
They help traders visualize price action
Used in technical analysis and price pattern recognition (e.g., Doji, Engulfing, Hammer)
Assist in determining entry and exit points
Why Traders Use Keltner Channels?
Keltner Channels are widely used by traders for identifying trends, detecting volatility, and spotting trade opportunities.
1. Trend Identification
The middle line (EMA) shows the general trend.
If price consistently stays above the middle line, it indicates a strong uptrend.
If price stays below, it signals a downtrend.
Use: Traders follow the trend direction to enter trades in line with momentum.
2. Volatility Measurement
The width of the channel expands and contracts based on Average True Range (ATR).
Wider channels = high volatility, tighter channels = low volatility.
Use: Helps traders decide when to expect breakouts or calm periods.
3. Breakout Signals
A break above the upper band can signal a bullish breakout.
A break below the lower band can signal a bearish breakout.
Use: Traders use this for momentum trading and breakout entries.
4. Overbought/Oversold Conditions
Price touching or crossing the upper band may suggest it's overbought.
Price touching or crossing the lower band may suggest it's oversold.
Use: Traders combine this with RSI or MACD to confirm reversal setups.
5. Trade Entry and Exit
When price pulls back to the middle EMA during a trend, it may present a buy/sell opportunity.
Exits can also be planned if price returns inside the bands after a breakout.
Use: Helps with precise entry and exit timing.
6. Combines Well With Other Indicators
Commonly used with:
RSI (for confirmation)
MACD (for momentum)
Candlestick patterns (for price action signals)
Combining Candlestick Patterns with Keltner Channels gives traders a powerful method to confirm entries, spot reversals, and improve accuracy. Here’s why this combination works so well:
1. Context for Candlestick Signals
Candlestick patterns (like doji, engulfing, or pin bars) show potential price reversals, but they need context to be reliable. Keltner Channels provide that context:
A bullish candlestick near the lower band suggests a stronger buy signal.
A bearish candlestick near the upper band strengthens a sell signal.
2. Filtering False Signals
Candlestick patterns occur frequently, and not all are meaningful.
The location within the Keltner Channel helps filter out weak or false patterns.
Example: A bullish engulfing candle outside the lower band = high-probability reversal.
3. Improved Entry Timing
Traders wait for a candlestick pattern confirmation when price touches or crosses a Keltner band.
This avoids premature entries and allows tighter stop-losses.
4. Better Risk-Reward Setup
Candlestick entry near channel extremes (upper/lower band) lets traders place stop-losses just beyond recent highs/lows.
The target can be the opposite side of the channel or the middle EMA.
5. Visual Simplicity
Keltner Channels + Candles are visually intuitive.
Even beginner traders can easily recognize:
Overextended candles near channel edges.
Confirmed breakouts or reversals.
This Timeframe 5 min : XAUUSD
StrengthFactorsLibrary "StrengthFactors"
Strength factor calculations for various market analysis metrics
get_threshold(opt, input_val, avg_val, lineancy)
Calculate threshold based on options
Parameters:
opt (string) : Threshold option ("Disabled", "User Input Threshold", "Average as Threshold")
input_val (float) : User input threshold value
avg_val (float) : Average value for threshold
lineancy (float) : Lineancy adjustment percentage
Returns: Calculated threshold
get_percentage_of_threshold(value, threshold)
Calculate percentage of threshold
Parameters:
value (float) : Current value
threshold (float) : Threshold value
Returns: Percentage of threshold
get_distance_sf(lookback, thr_opt, thr_inp, lineancy)
Calculate Distance Strength Factor
Parameters:
lookback (int) : Lookback period for average
thr_opt (string) : Threshold option
thr_inp (float) : User threshold input
lineancy (float) : Lineancy adjustment
Returns:
get_uniformity_sf(lookback, thr_opt, thr_inp, stddev_mult, lineancy)
Calculate Uniformity Strength Factor
Parameters:
lookback (int) : Lookback period for average
thr_opt (string) : Threshold option
thr_inp (float) : User threshold input
stddev_mult (float) : Standard deviation multiplier
lineancy (float) : Lineancy adjustment
Returns:
get_overlap_sf(lookback, thr_opt, thr_inp, lineancy)
Calculate Overlap Strength Factor
Parameters:
lookback (int) : Lookback period for average
thr_opt (string) : Threshold option
thr_inp (float) : User threshold input
lineancy (float) : Lineancy adjustment
Returns:
get_body_sf(lookback, thr_opt, thr_inp, lineancy)
Calculate Body Strength Factor
Parameters:
lookback (int) : Lookback period for average
thr_opt (string) : Threshold option
thr_inp (float) : User threshold input
lineancy (float) : Lineancy adjustment
Returns:
get_close_sf(lookback, thr_opt, thr_inp, lineancy)
Calculate Close Strength Factor
Parameters:
lookback (int) : Lookback period for average
thr_opt (string) : Threshold option
thr_inp (float) : User threshold input
lineancy (float) : Lineancy adjustment
Returns:
get_breakout_sf(lookback, thr_opt, thr_inp, lineancy, bro_dir, is_inside_bar)
Calculate Breakout Strength Factor
Parameters:
lookback (int) : Lookback period for average
thr_opt (string) : Threshold option
thr_inp (float) : User threshold input
lineancy (float) : Lineancy adjustment
bro_dir (int) : Breakout direction
is_inside_bar (bool) : Is inside bar flag
Returns:
get_always_in_sf(thr_opt, thr_inp, lineancy)
Calculate Always-In Strength Factor
Parameters:
thr_opt (string) : Threshold option
thr_inp (float) : User threshold input
lineancy (float) : Lineancy adjustment
Returns:
get_directional_sf(overlap_prc, distance_prc, body_prc, close_prc, breakout_prc, lookback, thr_opt, thr_inp, lineancy)
Calculate Directional Strength Factor (composite)
Parameters:
overlap_prc (float) : Overlap SF as percentage of threshold
distance_prc (float) : Distance SF as percentage of threshold
body_prc (float) : Body SF as percentage of threshold
close_prc (float) : Close SF as percentage of threshold
breakout_prc (float) : Breakout SF as percentage of threshold
lookback (int) : Lookback period for average
thr_opt (string) : Threshold option
thr_inp (float) : User threshold input
lineancy (float) : Lineancy adjustment
Returns:
get_combined_direction_sf(body_prc, close_prc, breakout_prc, lookback, thr_opt, thr_inp, lineancy)
Calculate Combined Direction Strength Factor
Parameters:
body_prc (float) : Body SF as percentage of threshold
close_prc (float) : Close SF as percentage of threshold
breakout_prc (float) : Breakout SF as percentage of threshold
lookback (int) : Lookback period for average
thr_opt (string) : Threshold option
thr_inp (float) : User threshold input
lineancy (float) : Lineancy adjustment
Returns:
get_all_strength_factors(lookback, lineancy, dist_thr_opt, dist_thr_inp, body_thr_opt, body_thr_inp, close_thr_opt, close_thr_inp, breakout_thr_opt, breakout_thr_inp, bro_dir, is_inside_bar)
Get all strength factors at once (convenience function)
Parameters:
lookback (int) : Lookback period for averages
lineancy (float) : Lineancy adjustment percentage
dist_thr_opt (string) : Distance threshold option
dist_thr_inp (float) : Distance threshold input
body_thr_opt (string) : Body threshold option
body_thr_inp (float) : Body threshold input
close_thr_opt (string) : Close threshold option
close_thr_inp (float) : Close threshold input
breakout_thr_opt (string) : Breakout threshold option
breakout_thr_inp (float) : Breakout threshold input
bro_dir (int) : Breakout direction
is_inside_bar (bool) : Is inside bar flag
Returns: Map containing all strength factor results
Market Map – AK_Trades📌 Market Map – AK_Trades
A real-time context engine designed to enhance your entries, exits, and overall trade confidence.
Built to complement any scalping or breakout strategy — or function as a reliable standalone guide.
🧠 What It Does:
📊 Detects market structure shifts
📍 Draws clean Support/Resistance zones (non-repainting)
🟥 Displays trend background shading + trend label
🚨 Flags breakouts, reversals, and invalidations
📈 Adds a real-time confidence ribbon for quick decision-making
🧭 LEGEND
Element Description
🟩🟥 Background Color Trend direction based on 21/50 EMA (green = uptrend, red = downtrend)
🟥🟩 Dashed Lines Dynamic support (green) and resistance (red) from pivot highs/lows
🔼 BREAKOUT ↑ Triggered only if price breaks key level + 0.25 ATR and volume confirms
🔽 BREAKDOWN ↓ Triggered only on valid breakdown with volume and trend alignment
🟡 Triangle (Up/Down) Reversal Warning – candle closes against current trend & EMAs
❌ Orange X Invalidation Marker – price reversed after breakout within 2 bars
📉 Confidence Strip (Green/Red) Shows strength/weakness of each bar based on trend and EMA proximity
🔤 UPTREND / DOWNTREND Trend label shown top-right of chart
⚠️ Notes:
Use this for bias confirmation, clean visual structure, and exit management.
Best paired with a high-conviction entry signal.
❗Disclaimer:
This script is for educational purposes only. It is not financial advice. Use at your own risk. The author assumes no responsibility for any trading losses incurred.
Trailing Cumulative Volume DeltaShort Description:
A dynamic volume delta indicator that calculates a trailing sum of net buying/selling pressure over a user-defined number of recent bars, offering a more adaptive view of order flow momentum compared to fixed-anchor CVD.
Overview:
The Trailing Cumulative Volume Delta (TCVD) indicator provides a powerful way to analyze market sentiment by tracking the net difference between buying and selling volume. Unlike traditional Cumulative Volume Delta (CVD) indicators that typically reset at fixed intervals (e.g., daily, weekly), the TCVD calculates a rolling sum of volume delta over a specified number of recent bars. This "trailing" approach offers a more fluid and responsive measure of recent order flow dynamics.
How it Works:
Per-Bar Delta Calculation: For each bar on your chart, the indicator first calculates the net Volume Delta. This is done by looking at a finer, user-configurable Lower Timeframe (e.g., 1-minute data for a 15-minute chart bar) to determine the aggressive buying vs. selling volume within that bar.
Trailing Sum: The indicator then sums these individual per-bar net deltas over a user-defined Trailing Bars lookback period. For example, if "Trailing Bars" is set to 20, the TCVD value will represent the cumulative net delta of the last 20 bars.
Visualization:
The TCVD is plotted in a "MACD-Columns-Style" in a separate pane.
Teal: When the TCVD value is increasing (suggesting growing net buying pressure or diminishing net selling pressure over the trailing period).
Red: When the TCVD value is decreasing (suggesting growing net selling pressure or diminishing net buying pressure over the trailing period).
White: When it is returning to the mean.
How to Interpret and Use TCVD:
Trend Strength & Momentum:
A rising TCVD suggests that, on average over the trailing period, buying pressure is dominant or strengthening. This can confirm bullish price action or indicate underlying strength.
A falling TCVD suggests that selling pressure is dominant or strengthening, potentially confirming bearish price action or indicating weakness.
Divergences:
Unlike other Divergences, the CVD has two different types of Divergences: a) Absorption and b) Exhaustion. You only want to trade the Absorption pattern.
Zero Line Crossovers:
TCVD crossing above the zero line can indicate a shift towards net positive buying pressure over the lookback period.
TCVD crossing below the zero line can indicate a shift towards net positive selling pressure.
Confirmation: Use TCVD to confirm breakouts or breakdowns. A price breakout accompanied by a strongly rising TCVD is generally more reliable.
Key Settings:
Trailing Bars: (Default: 10)
Determines the number of recent bars to include in the cumulative delta sum.
Shorter periods make the TCVD more responsive to immediate changes.
Longer periods provide a smoother, longer-term view of order flow.
Use custom timeframe: (Checkbox, Default: false)
Allows you to override the automatic selection of the lower timeframe for delta calculation.
Timeframe for Delta Calculation: (Default: "1" - 1 minute)
Specifies the lower timeframe data used to calculate the volume delta for each individual chart bar.
Choosing a very fine timeframe (e.g., seconds) can provide high precision but may be limited by data availability or processing load.
If "Use custom timeframe" is unchecked, the script attempts to choose a sensible default based on your chart's timeframe (e.g., "1S" for second charts, "1" for intraday, "5" for daily, "60" for weekly+).
Examples:
Confirming Breakout Strength:
Price breaks out above a significant resistance level.
If the TCVD is also sharply rising and has perhaps crossed above its zero line, it provides confirmation that strong buying interest is fueling the breakout, increasing confidence in its validity.
Important Notes:
This indicator requires reliable volume data from your broker/data feed to function correctly. If your chart does not have volume, or if the volume data is unreliable, the TCVD will not be accurate.
Like all indicators, TCVD is best used as part of a comprehensive trading strategy, in conjunction with price action analysis and other indicators or tools.
Experiment with the Trailing Bars and Timeframe for Delta Calculation settings to find what best suits your trading style, the asset you are analyzing, and the chart timeframe you are using.
Feel free to modify this, add your personal touch, or include specific screenshots when you publish!
TradersFriendCandles v2
TradersFriendCandles
A fully customizable candle‑color and banding indicator built on percentile + ATR, with optional EMA vs. ALMA trend filtering and higher‑timeframe support.
Key Features
Dynamic Percentile Center Line
Compute any Nth percentile over M bars (default 20th over 15) to serve as a reference “mid‑price” level.
ATR‑Based Bands
Envelope that percentile line with upper/lower bands at X × ATR (default 1×), plus an extended upper band at 3.5× ATR.
Higher‑Timeframe Mode
Plot bands based on a higher timeframe (e.g. daily bands on a 15m chart) so you can gauge macro support/resistance in micro timeframes.
Custom‑Color Candles
5 user‑editable colors for:
Strong bullish
Light bullish
Neutral
Light bearish
Strong bearish
Optional EMA vs. ALMA Trend Filter
When enabled, candles simply turn “bull” or “bear” based on fast EMA crossing above/below slow ALMA.
Border‑Only Coloring
Keep candle bodies transparent and color only the border & wick.
Live Plot Labels & Track Price
All lines carry titles and can display current values directly on the price scale.
Alerts
Strong Bull Breakout (price stays above upper band)
Strong Bear Breakdown (price closes below lower band)
EMA/ALMA crossovers
Inputs & Customization
Percentile level & lookback length
ATR length, multiplier, opacity
Fast EMA length, ALMA parameters (offset, length, sigma)
Toggle bands, lines, custom candles, higher‑timeframe mode
Pick your own colors via color‑picker inputs
Use TradersFriendCandles to visualize momentum shifts, dynamic support/resistance, and trend strength all in one overlay. Perfect for pinpointing breakouts, breakdowns, and filtering noise with adjustable sensitivity.