Harmonic Patterns SuiteHello Traders!
This indicator takes the time-consuming search for harmonic patterns completely off your hands. TRN Harmonics utilizes a unique swing-based pattern recognition to pinpoint 14 different harmonic patterns in real-time with unparalleled precision.
Pattern List (each pattern has a bullish and a bearish version)
Gartley
Bat
Butterfly
Crab
Cypher
Shark
5-0
Feature List
Real-time harmonic pattern detection
7 different built-in breakout conditions
Visualization of entry, stop-loss and take-profit levels
Pattern performance statistics
Calculation of risk-rewards ratio
Risk Management
Breakout alerts
Customizable pattern size and accuracy
Customizable look and feel
The value of this indicator is to support traders to easily identify harmonic patterns in an automated way. The special swing-based pattern recognition and the numerous built-in premium features make this indicator unique. The trader saves a lot of time scanning the markets for harmonic patterns, since everything is done automatically for the trader: Finding the pattern, looking and alerting for a breakout, computing the entry, stop loss and take profit levels as well as handling the risk management and computing the optimal order quantity.
How to Trade with the Harmonic Patterns Suite
Identify the Pattern
Add the Harmonic Patterns Suite to your chart and look for patterns on the asset and timeframe of your choice. The patterns are detected in real-time. If a pattern develops further in the next bars, then the indicator updates the pattern accordingly until a breakout is confirmed or the pattern becomes invalid.
You can also use the built-in alerts to easily get notified when a pattern occurs. In the indicator settings in the "Alerts" section you can choose whether you want to get notified when a pattern is
1. in the making (Pattern active),
2. confirms an up breakout (B/O Up Confirmed)
3. confirms a down breakout (B/O Down Confirmed)
4. (Unconfirmed) in case a pattern breakout occurs, even if the pattern is not yet confirmed
This allows you to stay informed about potential breakout opportunities that are still awaiting confirmation.
Check Pattern Statistics
The pattern statistics make it easy for you to see how successful a pattern is on the asset and timeframe you are watching. You should always check the statistics before entering a trade. The chart displays the statistics in the upper right corner. These statistics are categorized into two sections: "long" for patterns with an upward breakout and "short" for patterns with a downward breakout.
In the initial columns, labeled as "short" and "long", the identified breakouts are further divided based on the different harmonic patterns. The following columns represent the count of the events:
1. Occ. (Occurrence) categorized according to the values of R from the first column
2. TP1, TP2 (Take Profit) - targets 1 und 2
3. SL (Stop Loss)
4. T/O (Time Out) - neither stop loss or targets where hit in a certain amount of time
Breakout – Entry, Stop Loss and Targets
The indicator automatically displays the entry price line (EP) in grey at the point where the breakout got detected. Once a breakout has been confirmed, place a buy order near the EP level for a long position, or a sell order for a short position. Set your stop-loss at the price level of the red stop-loss line (SL) and set your take-profits at the price level of the green take-profit-lines (TP1, TP2).
Risk Management
The Harmonic Patterns Suite comes with a built-in risk management feature. Just go to the settings and scroll down to the section "Risk Management". Here you can enter your Account Size and the percentage you want to Risk when you enter a position after a pattern breakout.
In the "Trade Management" section, you have the option to define the minimum accepted risk-reward ratio for confirmed harmonic patterns. This means that breakouts of patterns failing to meet the minimum risk-reward ratio will not be considered as confirmed signals. If a breakout gets confirmed, the indicator automatically calculates the position size (Quantity). You can read the quantity from the gray entry point line (EP), which is located to the right of the risk-reward ratio (R). Note that your risk-reward ratio (R) is calculated based on TP1.
Customization and settings
The indicator can scan for smaller and larger patterns at the same time. Adjust the harmonics size in the indicator settings to align them with your preferences. A larger size results in larger consolidations. Depending on the asset class, the market or the market phase, different sizes can be used for pattern detection.
To detect more patterns, increase the tolerance level, even though it may result in lower accuracy. However, be mindful that a higher tolerance level may result in more patterns hitting their stop-loss. Look for a tolerance level that leads to favorable statistics and focus on trading patterns with a proven performance history.
Finally, you have the flexibility to customize various visual elements, such as the color of the pattern and whether to display values like price, target, or risk-reward ratio on your chart. You can also choose where these values appear.
Breakout Conditions
Identifying breakout conditions is paramount for successfully recognizing and capitalizing on chart patterns. Trading tools equipped with diverse breakout conditions offer traders a comprehensive approach to deciphering market trends and making informed decisions.
This section delves into the set of breakout conditions built within TRN Harmonics, exploring their functionalities, applications, and the benefits they provide in the realm of chart pattern recognition.
TRN Bars Signal + Trend
The Harmonics Pattern Suite includes also the TRN Bars algorithm. It is designed to spot bullish and bearish trends and reversals. The trend analysis is based on a new algorithm that weights several different inputs:
1. classical and advanced bar patterns and their statistical frequency
2. probability distributions of price expansions after certain bar patterns
3. bar information such as wick length in %, overlapping of the previous bar in % and many more
4. historical trend and consolidation analysis
If you use this breakout condition, the breakout is determined by the next signal (reversal, continuation, breakout) or trend change of the TRN bars after one of the harmonic patterns has been completed. These Breakout conditions give you the accurate trend recognition of the TRN Bars to find the perfect entry.
TRN Bars Signal
If a harmonic pattern gets completed and you use this breakout condition, the breakout will be determined by the next confirmed signal (reversal, continuation, breakout) of the TRN Bars. These Breakout Condition delivers signals with reenforced reliability, but they occur not as often as other breakout conditions.
RSI Crossing
With this breakout condition, a breakout for a long position gets determined, when the RSI line crosses above the RSI moving average (MA) after one of the harmonic patterns has been completed. A bearish breakout after a completed harmonic pattern gets determined, when the RSI line crosses below the RSI MA.
You can choose your preferred RSI and MA length in the indicator settings under the “Trade Management” section.
MACD Crossing
If a harmonic pattern gets completed and you use this breakout condition, the breakout gets determined, when the MACD line crosses above the signal line (bullish MACD crossover) for a bullish breakout. Conversely, when the MACD line crosses below the signal line (bearish MACD crossover), a bearish breakout gets determined after a harmonic pattern was completed.
You can choose your preferred MACD length in the indicator settings under the “Trade Management” section.
Swing Flip
Use this breakout condition, if you want a breakout to get determined when the next swing after point D gets detected by the build in swing detection algorithm of TRN Harmonics.
Close Below/Above Last 2 Lows/Highs
With this breakout condition, a breakout for a short position gets determined, if a close below the lows of the last 2 bars gets detected. For a long position, the breakout gets determined if a close above the highs of the last 2 bars gets detected.
Close Below/Above Last 3 Lows/Highs
In this scenario, a short position breakout is confirmed if the price closes below the lows of the previous 3 bars. Conversely, a long position breakout is confirmed if the price closes above the highs of the last 3 bars.
How To Setup Breakout Conditions
Go to indicator settings and choose one of our built-in breakout conditions under the section "Trade Management" of the menu item "Inputs", like for example TRN Bars Signal + Trend. A selection of 7 distinct breakout conditions is at your disposal.
If you use the default settings of the Harmonic Patterns Suite, TRN Bars Signal + Trend will be the breakout condition for the detected harmonic patterns.
Computation Details
The real-time detection of the harmonic patterns utilizes a unique swing-based pattern recognition. The difference to other swing-based computations is that the pivot points are identified without a look-ahead value. The result is a faster and better real-time detection. Furthermore, the detection of the ratios between the single swings is based on a dynamic volatility measurement similar to the ATR. The tolerance level unites several internal parameters into one and results in a user-friendly setting.
Risk Disclaimer
The content, tools, scripts, articles, and educational resources offered by TRN Trading are intended solely for informational and educational purposes. Remember, past performance does not ensure future outcomes.
Pattern
Consolidation and Range PatternHello Traders!
The TRN Consolidation and Range Pattern indicator utilizes a unique swing-based pattern recognition to pinpoint consolidation zones in real-time with unparalleled precision. The rectangle pattern, also known as a trading range or a consolidation pattern, is characterized by horizontal lines that act as support and resistance levels, creating a rectangular shape.
The value of this indicator is to support traders to easily identify consolidations and ranges. The special swing-based pattern recognition and the numerous built-in premium features make this indicator unique. Below, you'll find a list of these features.
Feature List
Real-time consolidation/range detection
Visualization of entry, stop-loss and take-profit levels
Pattern performance statistics
Calculation of risk rewards ratio
Risk Management
Breakout alerts
Customizable pattern size and accuracy
Customizable look and feel
The trader saves a lot of time scanning the markets for consolidation patterns, since everything is done automatically for the trader: Finding the consolidation, looking and alerting for a breakout, computing the entry, stop loss and take profit levels as well as handling the risk management and computing the optimal order quantity. Now, we describe how a combination of these features enhances the trading performance of confirmed consolidation patterns.
How to Trade with the TRN Consolidation and Range Pattern
Identify the Pattern
Add the TRN Consolidation and Range Pattern to your chart and look for the pattern on the asset and timeframe of your choice. The pattern is detected in real-time. If the pattern develops further in the next bars, then the indicator updates the consolidation zone until a breakout is confirmed.
You can also use the built-in alerts to easily get notified when a pattern occurs. In the indicator settings in the "Alerts" section you can choose whether you want to get notified when a pattern is in the making (Pattern active), confirms a breakout to the upside (B/O Up Confirmed) or confirms a breakout to the downside (B/O Down Confirmed). By selecting the "Unconfirmed" option, you will receive notifications when a pattern breakout occurs, even if it is not yet confirmed. This allows you to stay informed about potential breakout opportunities that are still awaiting confirmation.
Check Pattern Statistics
The pattern statistics make it easy for you to see how successful a pattern is on the asset and timeframe you are watching. You should always check them out before entering a trade. The chart displays the statistics in the upper right corner. These statistics are categorized into two sections: "long" for patterns with an upward breakout and "short" for patterns with a downward breakout.
In the initial columns, labeled as "short" and "long", the identified breakouts are further divided based on whether the risk-reward ratio (R) is below a specified value (< x) or equal to/greater than the specified value (>= x). The following columns represent the count of the events:
1. Occ. (Occurrence) categorized according to the values of R from the first column
2. TP1, TP2, TP3 (Take Profit) - targets 1, 2 and 3
3. SL (Stop Loss)
4. T/O (Time Out) - neither stop loss or targets where hit in a certain amount of time
Breakout – Entry, Stop Loss and Targets
The indicator automatically displays the entry price line (EP) in grey et the point where the price breaks through the resistance or support levels, indicating that the consolidation period is over. Once a breakout has been confirmed, place a buy order near the EP level for a long position, or a sell order for a short position. Set your stop-loss at the price level of the red stop-loss line (SL) and set your take-profits at the price level of the green take-profit-lines (TP1, TP2, TP3). Note that your risk-reward ratio (R) was calculated based on TP1.
Risk Management
The TRN Consolidation and Range Pattern comes with a built-in risk management feature. Just go to the settings and scroll down to the section "Risk Management".
Here you can enter your Account Size and the percentage you want to Risk when you enter a position after a pattern breakout.
In the "Trade Management" section, you have the option to define the minimum accepted risk-reward ratio for confirmed rectangles. This means that breakouts of patterns failing to meet the minimum risk-reward ratio will not be considered as confirmed signals.
If a breakout gets confirmed, the indicator automatically calculates the position size (Quantity). You can read the quantity from the gray entry point line (EP), which is located to the right of the risk-reward ratio (R).
Customization and Settings
The indicator can scan for smaller and larger patterns at the same time. Adjust the consolidation sizes in the indicator settings to align them with your preferences. A larger size results in larger consolidations. Depending on the asset class, the market or the market phase, different sizes can be used for the consolidation detection.
To detect more patterns, increase the tolerance level, even though it may result in lower accuracy. However, be mindful that a higher tolerance level may result in more patterns hitting their stop-loss. Look for a tolerance level that leads to favorable statistics and focus on trading patterns with a proven performance history.
Finally, you have the flexibility to customize various visual elements, such as the color of the pattern and whether to display values like price, target, or risk-reward ratio on your chart. You can also choose where these values appear.
Computation Details
The real-time detection of the consolidations and ranges utilizes a unique swing-based pattern recognition. The difference to other swing-based computations is that the pivot points are identified without a look-ahead value. The result is a faster and better real-time detection. Furthermore, the detection of equal lows or highs which form a support or resistance level is based on a dynamic volatility measurement similar to the ATR. The tolerance level unites several internal parameters into one and results in a user-friendly setting.
Risk Disclaimer
The content, tools, scripts, articles, and educational resources offered by TRN Trading are intended solely for informational and educational purposes. Remember, past performance does not ensure future outcomes.
Sequencer [LuxAlgo]The Sequencer indicator is a tool that is able to highlight sequences of prices based on their relative position to past prices, which allows a high degree of customization from the user.
Two phases are included in this script, a "Preparation" phase and a "Lead-Up" phase, each with a customizable amount of steps, as well as other characteristics.
Users can also highlight the last step leading to each phase completion with a level, this level can eventually be used as a key price point.
🔶 USAGE
The script highlights two phases, each being based on a sequence of events requiring prices to be higher/lower than prices various bars ago.
The completion of the preparation phase will lead to the evaluation of the lead-up phase, however, it isn't uncommon to see a reversal occurring after the completion of a preparation phase. In the script, bullish preparations are highlighted in green, while bearish preparations are highlighted in red.
Completion of a "Lead-Up" phase is indicative of a potential reversal, with a bullish reversal for the completion of a bullish lead-up (in blue), and a bearish reversal for the completion of a bearish lead-up (in orange).
Using a higher length for the preparation/lead-up phases can allow the detection of longer-term reversals.
Users wishing to display levels based on specific phases completion can do so from the settings in the "Preparation/Lead-Up Completion Levels" settings group.
The "Show Last" settings determine the amount of respective levels to display on the chart.
🔶 PREPARATION PHASE
The "Preparation" phase precedes the "Lead-Up" phase. The completion of this phase requires N successive prices to be lower than the closing price P bars ago for a bullish phase, and for prices to be higher than the closing price P bars ago for a bearish phase, where N is the user set "Preparation Phase Length" and P the user set "Comparison Period".
🔹 Refined Preparations
Sequences of the preparation phase can either be "Standard" or "Refined". Unlike the standard preparation previously described a refined preparation requires the low prices from the user-specified steps in "Refined Preparation Steps" to be above the low price of the last step for a bullish preparation phase, and for the high prices specified in the refined preparation steps to be below the high price of the last step for a bearish preparation phase.
🔶 LEAD-UP PHASE
The "Lead-Up" phase is initiated by the completion of the "Preparation" phase.
Completion of this phase requires the price to be lower than the low price P bars ago N times for a bullish phase, and for prices to be higher than the high price P bars ago N times for a bearish phase, where N is the user set "Lead-Up Phase Length" and P the user set "Comparison Period".
Unlike with the "Preparation" phase these conditions don't need to be successive for them to be valid and can occur at any time.
🔹 Lead-Up Cancellation
Incomplete "Lead-Up" phases can be canceled and removed from the chart once a preparation of the opposite sentiment is completed, avoiding lead-ups to be evaluated after completion of complete preparations.
This can be disabled by toggling off "Apply Cancellation".
🔹 Lead-Up Suspension
Like with refined preparations, we can require specific steps from the lead-up phase to be higher/lower than the price on the last step. This can be particularly important since we do not require lead-up steps to be successive.
For a bullish lead-up, the low of the last step must be lower than the minimum closing prices of the user-specified steps for it to be valid, while for a bearish lead-up, the high of the last step must be higher than the maximum closing prices of the user-specified steps for it to be valid.
This effectively allows for eliminating lead-up phases getting completed on opposite trends.
🔶 SETTINGS
🔹 Preparation Phase
Preparation Phase Length: Length of the "Preparation" phase.
Comparison Period: Offset used to compare current prices to past ones.
Preparation Type: Type of preparation to evaluate, options include "Standard" or "Refined"
Refined Preparations Steps: Steps to evaluate when preparation type is "Refined"
🔹 Lead-Up Phase
Lead-Up Phase Length: Length of the "Lead-Up" phase.
Comparison Period: Offset used to compare current prices to past ones.
Suspension: Applies suspension rule to evaluate lead-up completion.
Suspension Steps: Specifies the steps evaluated to determine if the lead-up referral is respected. Multiple steps are supported and should be comma-separated.
Apply Cancellation: Cancellation will remove any incomplete lead-up upon the completion of a new preparation phase of the opposite sentiment.
🔹 Levels
Bullish Preparations Levels: When enabled display price levels from completed bullish preparations.
Show Last: Number of most recent bullish preparations levels to display.
Bearish Preparations Levels: When enabled display price levels from completed bearish preparations.
Show Last: Number of most recent bearish preparations levels to display.
Wick %Heyo Fellas,
thanks for checking out my new indicator.
Introduction
Wick % is a simple indicator to compare wick size with body size (mode 1) and to compare wick size with candle size (mode 2).
Upper wicks are bullish when close is higher than open pricen.
Lower wicks are bearish when close is lower than open price.
Wick Theory
In general, big wick and small bodie on a bar means that bull and bears are fighting heavily.
A big wick below the body means the bulls are leading in that fight,
and a big wick above the body means the bears are leading in that fight.
Calculation Formula
Mode 1 – Percentual Increase Wick/Body:
upperWickPercentage = (upperWick / body) * 100 - 100
lowerWickPercentage = (lowerWick / body) * 100 - 100
Mode 2 – Percent Wick/Candlestick:
upperWickPercentage = (upperWick / (high - low)) * 100
lowerWickPercentage = (lowerWick / (high - low)) * 100
Usage
You can use it on every symbol and every timeframe.
The indicator repaints by default, but you can disable it in the settings.
When you disable repaint, it moves the label one bar to the right.
If you want to use the indicator for signals, you must disable repainting.
Best regards,
simwai
ZigZag LibraryThis is yet another ZigZag library.
🔵 Key Features
1. Lightning-Fast Performance : Optimized code ensures minimal lag and swift chart updates.
2. Real-Time Swing Detection : No more waiting for swings to finalize! This library continuously identifies the latest swing formation.
3. Amplitude-Aware : Discover significant swings earlier, even if they haven't reached the standard bar length.
4. Customizable Visualization : Draw ZigZag on-demand using polylines for a tailored analysis experience.
Stay tuned for more features as this library is being continuously enhanced. For the latest updates, please refer to the release information.
🔵 API
// Import this library. Remember to check the latest version of this library and replace the version number below.
import algotraderdev/zigzag/1 as zz
// Initialize the ZigZag instance.
var zz.ZigZag zig = zz.ZigZag.new().init(
zz.Settings.new(
swingLen = 5,
lineColor = color.blue,
lineStyle = line.style_solid,
lineWidth = 1))
// Analyze the ZigZag using the latest bar's data.
zig.tick()
// Draw the ZigZag.
if barstate.islast
zig.draw()
Volume Spike IndicatorHello dear traders,
Today we're discussing an indicator I've coded: the Volume Spike Indicator (VSI).
The indicator isn't a groundbreaking invention and certainly not a novelty. Nevertheless, I haven't seen this version of the indicator on TradingView before, so I'd like to introduce it.
1. The Origin of the Idea:
We're all familiar with volume charts: A volume chart visually represents the trading activity for a specific asset over a certain period, indicating the total number of shares or contracts traded.
We also know that volume spikes can significantly impact the market. A volume spike represents an extreme anomaly, a day, week, or month with an extraordinary amount of trading. However, recognizing these spikes in practice isn't always straightforward. What constitutes high volume? How do we define and identify it? The answers to these questions aren't easy.
It's commonly said that a volume spike could be identified if the volume is 25% more than the average of the two weeks prior, but how do you measure this 25%? It's not always easy to calculate, especially in real-time.
This challenge led me to develop the concept into an indicator.
How Does It Work?
Imagine being able to "feel" the market's energy like a surfer feels the ocean. The VSI does something similar by examining trading volume and comparing it to what has been typical over the past few weeks. Here's a quick look at the magic behind it:
Step 1: Establishing the Baseline: We start by establishing a baseline, i.e., the average trading volume over a given period. Let's use the last 10 days as the default setting. We choose 10 days because, in the traditional stock market, 10 days represent two weeks if you subtract weekends. This gives us a fixed line to compare against.
Step 2: Recognizing Peaks: Next, we look for days when the trading volume significantly exceeds this average. The size of the jump is where you have a say. You can set a threshold, such as 25%, to define what you consider a volume spike.
Step 3: The Calculation: This is where the math comes into play. We calculate the percentage change in today's volume compared to the average volume of the last 10 days. For example, if today's volume is 30% above the average and you've set your threshold at 25%, the VSI will recognize this as a spike.
Step 4: Visual Cue: These spikes are then plotted on a graph, with each spike represented as a bar. The height of the bar indicates the spike's percentage size, so you can see at a glance how significant a spike is.
Step 5: Intuitive Color Coding: For quick analysis, the VSI employs a color-coding system. Exceptionally high peaks, such as those exceeding a 100% increase, are highlighted in blue to emphasize their importance. Other peaks are shown in red, creating a visual hierarchy for quick volume data interpretation.
Why This Matters:
Identifying these spikes can help pinpoint the beginning or end of a trend. The idea is that when trading peaks at a certain level, there might be no more buyers or sellers willing to engage at that price level. Volume peaks, and a reversal is likely imminent. It's a simple yet effective concept. Therefore, it's crucial to use this indicator in the context of the trend, as not every spike carries the same significance.
Customizable:
The beauty of the VSI lies in its flexibility. Trading futures? You might want to adjust the averaging period to 14 days to better suit your market. You have full control over the settings to tailor them to your trading style.
Interpreting the Figures:
A positive percentage indicates a volume spike above the average – the higher the percentage, the more significant the spike.
If the percentage exceeds a certain threshold (which you can set, e.g., 25%), it signals a volume spike, indicating increased market activity that could precede significant price movement.
What makes the VSI genuinely adaptable is your ability to tweak the parameters to suit your needs.
Are you trading in a volatile market? Extend the SMA period to smooth out the noise. Trading in a 24-hour market? Adjust the length of your SMA. Seeking finer details? Shorten it. The VSI is yours to adapt to your trading strategy.
---------------------------------------------------------------------------------------------------------------------
As we wrap up this introduction to the Volume Spike Indicator, I hope you're as excited about its potential as I am. This tool, born out of curiosity and a desire for clarity in the vast ocean of market data, is designed to be your ally in navigating the waves of trading activity.
Remember, the true power of the VSI lies not just in its ability to highlight significant volume spikes, but in its adaptability to your unique trading style and needs. Whether you're charting courses through the tumultuous seas of day trading or navigating the broader currents of long-term investments, the VSI is here to offer insights and guidance.
I encourage you to experiment with it, customize it, and see how it can enhance your trading strategy. And as you do, remember that every tool, no matter how powerful, is just one piece of the puzzle. Combine the VSI with your knowledge, experience, and intuition to make informed and strategic trading decisions.
Thank you for taking the time to explore the Volume Spike Indicator with me.
Best Regards,
Karim Subhieh
TimeSeriesRecurrencePlotLibrary "TimeSeriesRecurrencePlot"
In descriptive statistics and chaos theory, a recurrence plot (RP) is a plot showing, for each moment i i in time, the times at which the state of a dynamical system returns to the previous state at `i`, i.e., when the phase space trajectory visits roughly the same area in the phase space as at time `j`.
```
A recurrence plot (RP) is a graphical representation used in the analysis of time series data and dynamical systems. It visualizes recurring states or events over time by transforming the original time series into a binary matrix, where each element represents whether two consecutive points are above or below a specified threshold. The resulting Recurrence Plot Matrix reveals patterns, structures, and correlations within the data while providing insights into underlying mechanisms of complex systems.
```
~starling7b
___
Reference:
en.wikipedia.org
github.com
github.com
github.com
github.com
juliadynamics.github.io
distance_matrix(series1, series2, max_freq, norm)
Generate distance matrix between two series.
Parameters:
series1 (float) : Source series 1.
series2 (float) : Source series 2.
max_freq (int) : Maximum frequency to inpect or the size of the generated matrix.
norm (string) : Norm of the distance metric, default=`euclidean`, options=`euclidean`, `manhattan`, `max`.
Returns: Matrix with distance values.
method normalize_distance(M)
Normalizes a matrix within its Min-Max range.
Namespace types: matrix
Parameters:
M (matrix) : Source matrix.
Returns: Normalized matrix.
method threshold(M, threshold)
Updates the matrix with the condition `M(i,j) > threshold ? 1 : 0`.
Namespace types: matrix
Parameters:
M (matrix) : Source matrix.
threshold (float)
Returns: Cross matrix.
rolling_window(a, b, sample_size)
An experimental alternative method to plot a recurrence_plot.
Parameters:
a (array) : Array with data.
b (array) : Array with data.
sample_size (int)
Returns: Recurrence_plot matrix.
Fair Value Gap Absorption Indicator [LuxAlgo]The Fair Value Gap Absorption Indicator aims to detect fair value gap imbalances and tracks the mitigation status of the detected fair value gap by highlighting the mitigation level till a new fair value gap is detected.
The Fair Value Gap (FVG) is a widely utilized tool among price action traders to detect market inefficiencies or imbalances. These imbalances arise when buying or selling pressure is significant, resulting in a large upward or downward move, leaving behind an imbalance in the market.
🔶 USAGE
A fair value gap appears in a triple-candle pattern when there is a large candle whose previous candle’s high and subsequent candle’s low do not fully overlap the large candle. The space between these wicks is known as the fair value gap.
Price can come back to these imbalance areas and mitigate them, however, this is sometimes a process involving multiple bars, the displayed imbalances by the indicator allow tracking the current mitigation level of a displayed imbalance.
Fair value gaps can become a magnet for the price before continuing in the same direction. Traders commonly wait for the price to revert toward the fair value gap to clear out the imbalance before continuing to move toward the prevailing trend.
🔶 SETTINGS
🔹Fair Value Gaps
Fair Value Gap Width Filter: defines the filtering multiplier, please refer to the tooltip of the input option for further details.
Bullish, Imbalance and Mitigation: color customization option.
Bearish, Imbalance and Mitigation: color customization option.
Display Percentage of Mitigation: Display the percentage of the mitigation areas.
Historical Fair Value Gaps: toggles the visibility of the historical fair value gaps.
🔶 LIMITATIONS
Please note that filtering cannot be applied for the first 144 (atr fixed-length) candles since the atr value won't be present that is used for filtering.
🔶 RELATED SCRIPTS
Fair-Value-Gap
HTF-Fair-Value-Gap
Liquidity-Voids-FVG
INTELLECT_city - abcd PatternThe ABCD Pattern indicator is a tool that helps identify potential geometric patterns of price movement on the chart of a financial instrument. This indicator is based on trading strategies that use the formation of four separate points, designated A, B, C and D.
Point A: The starting point of the pattern, which usually represents the end of the previous price trend.
Point B: The top of the first price wave directed against the current trend.
Point C: Completion of the second price wave started from point B. Often point C is formed at a level close to the completion of the correction.
Point D: The end point of the pattern where price forms a third wave directed towards the original trend.
The indicator displays the AB, BC and CD lines on the chart and also provides labels for these levels. This can help traders and analysts identify and analyze potential ABCD patterns on a price action chart.
It is important to remember that the ABCD Pattern does not guarantee successful trading and traders should combine it with other analysis methods and strategies to make informed decisions. Testing and adaptation to specific market conditions are also key steps when using this indicator.
Fibonacci Timing Pattern IIThe Fibonacci Timing Pattern II is a price-based counter that seeks to determine medium-term reversals in price action. It is based on the following set of conditions:
* For a bullish Fibonacci timing signal II: The current close must be lower than the close prices from one and two periods ago. Simultaneously, the close price from two periods ago must be lower than the close price from three periods ago, and the close price from three periods ago must be lower than the close price from five periods ago. The Fibonacci sequence continues until the close price from thirty four periods ago which must be above the close price from fifty five periods ago.
* For a bearish Fibonacci timing signal II: The current close must be higher than the close prices from one and two periods ago. Simultaneously, the close price from two periods ago must be higher than the close price from three periods ago, and the close price from three periods ago must be higher than the close price from five periods ago. The Fibonacci sequence continues until the close price from thirty four periods ago which must be lower the close price from fifty five periods ago.
The signals of the pattern are ideally used in a sideways market or used in tandem with the trend (bullish signals are taken in a bullish market and bearish signals are taken in a bearish market).
Candlestick Percentile RankCANDLESTICK PERCENTILE RANK
█ OVERVIEW
This script is designed to sample all available candles within a chosen time frame and provide a candlestick percentile rank to each candle. This script works by measuring a candle's body or its low to high value to the upside, or to the downside in percentage or in dollar value. Once the candle is measured its given a value based on all the previous measurements. You will be able to know if a body ( or a full candle/bar ) is above, or below a certain percentile level. By doing this you're effectively going to know if a candle is under performing or under-performing compared to the chart's history.
Example : A candle that did a 30% move vs another did a 10% and a third did a 5%. Here we 3 candles. The one that did a 30% is going to be ranked at 100 because it's the highest while the 5% candle ranks at 0 and the 10% candles ranks at 50. you see how this works. Having a candle in the 90th percentile means at that time it scored better than 90% of the preceding candles based on its move ( in dollar or percentage ).
So imagine you have an organic move of an up trend, ideally and what you want to see is this ; a candle with a low rank followed by one that's higher, followed by one that's also higher until the trend stops and you see a pin bar or whatever topping candle. You expect to see a rank going from low value to high value to suddenly sharply decrease to low value.
Constant low values may indicate lower volatility or time to change. For example, a doji candle will create a very low percentile rank value ( body-wise ). A high percentile rank value means high volatility on body and full candle calculations.
^ This is only one use of it.
A trendline may also form with a breakout points and information about the trend of the volatility of recent candles. Moving averages when applied to these calculations and to the percentile ranks can absolutely help in making these trends a bit smoother which is why you can add them to the graph. if you wish.
This script can be used in multiple ways including as a measure of volatility. or for statistical purposes. If I know the 50th percentile of a candle value I can know a very critical information about an asset's behavior and how volatile it is compared to another. There are many questions that can be answered using this script. How many times has this asset printed a candle of x% in the past y amount of time and how often does that happen. Is this candle or that truly rare ?
This script also has an option to highlight a specific percentile level showing its value. You can also see the number of sampled candles for clarity on the reliability of the data.
In conclusion, candlesticks effect each others. The whole candlestick/bars patterns is based on this. The percentile Rank is an effective way to observe and study these effects. The percentile rank shows you how on a measuring stick from 0 to 100 how a candle ( body or full low-high ) ranks compared to other candles in the past based on dollar value or percentage value. There are many untapped usages of the percentile rank when applied to candlesticks calculations and I hope this script can help you with this. If one can study the behavior of an asset and its bars percentile ranks they can unlock some probabilistic advantages.
█ Future Plans and upgrades to this script may include :
1. Count the times a percentile level is hit.
2. Display details about the highest/lowest levels.
and more! feel free to let me know what you'd like to see!
█ How to use :
1. Put the script on your chart
2. Navigate to the settings
give the script a few seconds and you should be set.
lib_retracement_patternsLibrary "lib_retracement_patterns"
types and functions for XABCD pattern detection and plotting
method set_tolerances(this, tolerance_Bmin, tolerance_Bmax, tolerance_Cmin, tolerance_Cmax, tolerance_Dmin, tolerance_Dmax)
sets tolerances for B, C and D retracements. This creates another Pattern instance that is set as tolerances field on the original and will be used for detection instead of the original ratios.
Namespace types: Pattern
create_config(pattern_line_args, pattern_point_args, name_label_args, retracement_line_args, retracement_label_args, line_args_Dtarget, line_args_completion, line_args_tp1, line_args_tp2, line_args_sl, label_args_completion, label_args_tp1, label_args_tp2, label_args_sl, label_terminal, label_terminal_up_char, label_terminal_down_char, color_bull, color_bear, color_muted, fill_opacity, draw_point_labels, draw_retracements, draw_target_range, draw_levels, hide_shorter_if_shared_legs_greater_than_max, hide_engulfed_pattern, hide_engulfed_pattern_of_same_type, hide_longer_pattern_with_same_X, mute_previous_pattern_when_next_overlaps, keep_failed_patterns)
method direction(this)
Namespace types: Match
method length(this)
return the length of this pattern, determined by the distance between X and D point
Namespace types: Match
method height(this)
return the height of this pattern, determined by the distance between the biggest distance between A/C and X/D
Namespace types: Match
method is_forming(this)
returns true if not complete, not expired and not invalidated
Namespace types: Match
method tostring(this)
return a string representation of all Matches in this map
Namespace types: Match
method tostring(this)
Namespace types: map
remove_complete_and_expired(this)
method add(this, item)
Namespace types: map
method is_engulfed_by(this, other)
checks if this Match is engulfed by the other
Namespace types: Match
method update(tracking_matches, zigzag, patterns, max_age_idx, detect_dir, pattern_minlen, pattern_maxlen, max_sub_waves, max_shared_legs, max_XB_BD_ratio, debug_log)
checks this map of tracking Matches if any of them was completed or invalidated in
Namespace types: map
method mute(this, mute_color, mute_fill_color)
mute this pattern by making it all one color (lines and labels, for pattern fill there's another)
Namespace types: Match
method mute(this, mute_color, mute_fill_color)
mute all patterns in this map by making it all one color (lines and labels, for pattern fill there's another)
Namespace types: map
method hide(this)
hide this pattern by muting it with a transparent color
Namespace types: Match
method reset_styles(this)
reset the style of a muted or hidden match back to the preset configuration
Namespace types: Match
method delete(this)
remove the plot of this Match from the chart
Namespace types: Match
method delete(this)
remove all the plots of the Matches in this map from the chart
Namespace types: map
method draw(this)
draw this Match on the chart
Namespace types: Match
method draw(this, config, all_patterns, debug_log)
draw all Matches in this map, considering all other patterns for engulfing and overlapping
Namespace types: map
method check_hide_or_mute(this, all, config, debug_log)
checks if this pattern needs to be hidden or muted based on other plotted patterns and given configuration
Namespace types: Match
method add_if(id, item, condition)
convenience function to add a search pattern to a list, only if given condition (input.bool) is true
Namespace types: Pattern
Pattern
type to hold retracement ratios and tolerances for this pattern, as well as targets for trades
Config
allows control of pattern plotting shape and colors, as well as settings for hiding overlapped patterns etc.
Match
holds all information on a Pattern and a successful match in the chart. Includes XABCD pivot points as well as all Line and Label objects to draw it
The Master Pattern Indicator***READ THIS FIRST****
THE MASTER PATTERN Indicator
USER AGREEMENT
*** The personal/private use of this indicator is allowed, commercial use is FORBIDDEN.
***Commercial use will be interpreted as taking advantage of the free indicator in order to profit from it, for example: as part of any courses or mentorships offering training of the indicator or the concept its based. You don't need to pay for any training for this, the strategy is a simple trend following approach, even a caveman would understand.
**********************************************************************************************************************
Now please enjoy the BEST Master Pattern indicator you will ever find for Tradingvew, and for the best price: FREE.
Please do not give money to people trying to charge you for any inferior version of this indicator.
DESCRIPTION
The Master Pattern indicator or The Forex Master Pattern is an alternative form of technical analysis that provides a framework which will help you to find and follow the hidden price pattern that reveals the true intentions of financial markets. This algorithm I came up with does a very good job detecting the Phase 1 of the Forex Master Pattern cycle, which is the contraction point (or Value), and then proceeds to differentiate between major or minor lines and prints the liquidity lines the correct manner in relation to the swings expanding from the contraction.
On Phase 2 we get higher timeframe activation (also called Expansion), which is where price oscillates above and below the average price defined on Phase 1.
On Phase 3 is where we get a sustained deviation from value (the Trend).
In a very short time you will start noticing this pattern, even on naked charts. It is all a matter of training your eyes - the more time you invest studying the charts with this indicator (both historically and replaying the market on strategy tester), the faster you will become familiar with this method.
This indicator DOES NOT REPAINT. You can safely study the chart historically because what is printed historically is what prints real time.
Why do traditional based indicator systems fail over time? Because the markets move in cycles that constantly change structure. Those traditional indicator systems must be constantly optimized and settings tinkered with because of the changing market environment. There are an infinite number of variables that affect price so no exact technical system can work the same forever, which is also the reason why most bots/EA fail.
If you learn to spot the Forex Master Pattern and understand the sequence of the real cycles that drive the markets, you can more accurately forecast market behavior. By using traditional indicators you end up masking this pattern.
Use the insights provided by the Forex Master Pattern indicator to elevate your trading to the next level.
This method of analysis works in any liquid market and timeframe.
VERY IMPORTANT:
The default setting of historical bars is set to 500. This is more than enough for day trading and ensures fast drawings loading time and stable performance. Bear in mind that, the more bars you choose to load historically, the longer it will take to draw everything. The max setting of this input for now is 800. If it is possible to increase it, I will update the code. So if you want to make historical analysis far in the past, just use the chart replay feature.
Indicator Parameters:
They are all self-explanatory, except Type. You can choose between 1 and 2.
1 is better suited for LTF (M1 to M30)
2 is better suited for HTF (H1 and upwards)
However, this is my personal preference. You can of course experiment and choose what looks best for you.
Instructions to use the alert function:
1st step - Choose symbol and timeframe for the alert
2nd step - Go to indicator settings and tick/untick the boxes for the alerts you want
3rd step - Click on the ... (three dots) next to the indicator name (chart upper left corner) and click to add indicator alert
Then it's gonna add the alert with the conditions that you've ticked/unticked inside indicator settings.
Then repeat the process for different symbols, timeframes and different alert conditions.
PERFECT ENGULFING Candlestick Patterns by AnmolWill add some more patterns and conditions in it in future, for now its for detecting PERFECT Engulfings only.
Use these Engulfing to take a trade when it get detected on support/resistance
SimilarityMeasuresLibrary "SimilarityMeasures"
Similarity measures are statistical methods used to quantify the distance between different data sets
or strings. There are various types of similarity measures, including those that compare:
- data points (SSD, Euclidean, Manhattan, Minkowski, Chebyshev, Correlation, Cosine, Camberra, MAE, MSE, Lorentzian, Intersection, Penrose Shape, Meehl),
- strings (Edit(Levenshtein), Lee, Hamming, Jaro),
- probability distributions (Mahalanobis, Fidelity, Bhattacharyya, Hellinger),
- sets (Kumar Hassebrook, Jaccard, Sorensen, Chi Square).
---
These measures are used in various fields such as data analysis, machine learning, and pattern recognition. They
help to compare and analyze similarities and differences between different data sets or strings, which
can be useful for making predictions, classifications, and decisions.
---
References:
en.wikipedia.org
cran.r-project.org
numerics.mathdotnet.com
github.com
github.com
github.com
Encyclopedia of Distances, doi.org
ssd(p, q)
Sum of squared difference for N dimensions.
Parameters:
p (float ) : `array` Vector with first numeric distribution.
q (float ) : `array` Vector with second numeric distribution.
Returns: Measure of distance that calculates the squared euclidean distance.
euclidean(p, q)
Euclidean distance for N dimensions.
Parameters:
p (float ) : `array` Vector with first numeric distribution.
q (float ) : `array` Vector with second numeric distribution.
Returns: Measure of distance that calculates the straight-line (or Euclidean).
manhattan(p, q)
Manhattan distance for N dimensions.
Parameters:
p (float ) : `array` Vector with first numeric distribution.
q (float ) : `array` Vector with second numeric distribution.
Returns: Measure of absolute differences between both points.
minkowski(p, q, p_value)
Minkowsky Distance for N dimensions.
Parameters:
p (float ) : `array` Vector with first numeric distribution.
q (float ) : `array` Vector with second numeric distribution.
p_value (float) : `float` P value, default=1.0(1: manhatan, 2: euclidean), does not support chebychev.
Returns: Measure of similarity in the normed vector space.
chebyshev(p, q)
Chebyshev distance for N dimensions.
Parameters:
p (float ) : `array` Vector with first numeric distribution.
q (float ) : `array` Vector with second numeric distribution.
Returns: Measure of maximum absolute difference.
correlation(p, q)
Correlation distance for N dimensions.
Parameters:
p (float ) : `array` Vector with first numeric distribution.
q (float ) : `array` Vector with second numeric distribution.
Returns: Measure of maximum absolute difference.
cosine(p, q)
Cosine distance between provided vectors.
Parameters:
p (float ) : `array` 1D Vector.
q (float ) : `array` 1D Vector.
Returns: The Cosine distance between vectors `p` and `q`.
---
angiogenesis.dkfz.de
camberra(p, q)
Camberra distance for N dimensions.
Parameters:
p (float ) : `array` Vector with first numeric distribution.
q (float ) : `array` Vector with second numeric distribution.
Returns: Weighted measure of absolute differences between both points.
mae(p, q)
Mean absolute error is a normalized version of the sum of absolute difference (manhattan).
Parameters:
p (float ) : `array` Vector with first numeric distribution.
q (float ) : `array` Vector with second numeric distribution.
Returns: Mean absolute error of vectors `p` and `q`.
mse(p, q)
Mean squared error is a normalized version of the sum of squared difference.
Parameters:
p (float ) : `array` Vector with first numeric distribution.
q (float ) : `array` Vector with second numeric distribution.
Returns: Mean squared error of vectors `p` and `q`.
lorentzian(p, q)
Lorentzian distance between provided vectors.
Parameters:
p (float ) : `array` Vector with first numeric distribution.
q (float ) : `array` Vector with second numeric distribution.
Returns: Lorentzian distance of vectors `p` and `q`.
---
angiogenesis.dkfz.de
intersection(p, q)
Intersection distance between provided vectors.
Parameters:
p (float ) : `array` Vector with first numeric distribution.
q (float ) : `array` Vector with second numeric distribution.
Returns: Intersection distance of vectors `p` and `q`.
---
angiogenesis.dkfz.de
penrose(p, q)
Penrose Shape distance between provided vectors.
Parameters:
p (float ) : `array` Vector with first numeric distribution.
q (float ) : `array` Vector with second numeric distribution.
Returns: Penrose shape distance of vectors `p` and `q`.
---
angiogenesis.dkfz.de
meehl(p, q)
Meehl distance between provided vectors.
Parameters:
p (float ) : `array` Vector with first numeric distribution.
q (float ) : `array` Vector with second numeric distribution.
Returns: Meehl distance of vectors `p` and `q`.
---
angiogenesis.dkfz.de
edit(x, y)
Edit (aka Levenshtein) distance for indexed strings.
Parameters:
x (int ) : `array` Indexed array.
y (int ) : `array` Indexed array.
Returns: Number of deletions, insertions, or substitutions required to transform source string into target string.
---
generated description:
The Edit distance is a measure of similarity used to compare two strings. It is defined as the minimum number of
operations (insertions, deletions, or substitutions) required to transform one string into another. The operations
are performed on the characters of the strings, and the cost of each operation depends on the specific algorithm
used.
The Edit distance is widely used in various applications such as spell checking, text similarity, and machine
translation. It can also be used for other purposes like finding the closest match between two strings or
identifying the common prefixes or suffixes between them.
---
github.com
www.red-gate.com
planetcalc.com
lee(x, y, dsize)
Distance between two indexed strings of equal length.
Parameters:
x (int ) : `array` Indexed array.
y (int ) : `array` Indexed array.
dsize (int) : `int` Dictionary size.
Returns: Distance between two strings by accounting for dictionary size.
---
www.johndcook.com
hamming(x, y)
Distance between two indexed strings of equal length.
Parameters:
x (int ) : `array` Indexed array.
y (int ) : `array` Indexed array.
Returns: Length of different components on both sequences.
---
en.wikipedia.org
jaro(x, y)
Distance between two indexed strings.
Parameters:
x (int ) : `array` Indexed array.
y (int ) : `array` Indexed array.
Returns: Measure of two strings' similarity: the higher the value, the more similar the strings are.
The score is normalized such that `0` equates to no similarities and `1` is an exact match.
---
rosettacode.org
mahalanobis(p, q, VI)
Mahalanobis distance between two vectors with population inverse covariance matrix.
Parameters:
p (float ) : `array` 1D Vector.
q (float ) : `array` 1D Vector.
VI (matrix) : `matrix` Inverse of the covariance matrix.
Returns: The mahalanobis distance between vectors `p` and `q`.
---
people.revoledu.com
stat.ethz.ch
docs.scipy.org
fidelity(p, q)
Fidelity distance between provided vectors.
Parameters:
p (float ) : `array` 1D Vector.
q (float ) : `array` 1D Vector.
Returns: The Bhattacharyya Coefficient between vectors `p` and `q`.
---
en.wikipedia.org
bhattacharyya(p, q)
Bhattacharyya distance between provided vectors.
Parameters:
p (float ) : `array` 1D Vector.
q (float ) : `array` 1D Vector.
Returns: The Bhattacharyya distance between vectors `p` and `q`.
---
en.wikipedia.org
hellinger(p, q)
Hellinger distance between provided vectors.
Parameters:
p (float ) : `array` 1D Vector.
q (float ) : `array` 1D Vector.
Returns: The hellinger distance between vectors `p` and `q`.
---
en.wikipedia.org
jamesmccaffrey.wordpress.com
kumar_hassebrook(p, q)
Kumar Hassebrook distance between provided vectors.
Parameters:
p (float ) : `array` 1D Vector.
q (float ) : `array` 1D Vector.
Returns: The Kumar Hassebrook distance between vectors `p` and `q`.
---
github.com
jaccard(p, q)
Jaccard distance between provided vectors.
Parameters:
p (float ) : `array` 1D Vector.
q (float ) : `array` 1D Vector.
Returns: The Jaccard distance between vectors `p` and `q`.
---
github.com
sorensen(p, q)
Sorensen distance between provided vectors.
Parameters:
p (float ) : `array` 1D Vector.
q (float ) : `array` 1D Vector.
Returns: The Sorensen distance between vectors `p` and `q`.
---
people.revoledu.com
chi_square(p, q, eps)
Chi Square distance between provided vectors.
Parameters:
p (float ) : `array` 1D Vector.
q (float ) : `array` 1D Vector.
eps (float)
Returns: The Chi Square distance between vectors `p` and `q`.
---
uw.pressbooks.pub
stats.stackexchange.com
www.itl.nist.gov
kulczynsky(p, q, eps)
Kulczynsky distance between provided vectors.
Parameters:
p (float ) : `array` 1D Vector.
q (float ) : `array` 1D Vector.
eps (float)
Returns: The Kulczynsky distance between vectors `p` and `q`.
---
github.com
Master Pattern [LuxAlgo]The Master Pattern indicator is derived from the framework proposed by Wyckoff and automatically displays major/minor patterns and their associated expansion lines on the chart.
Liquidity levels are also included and can be used as targets/stops. Note that the Liquidity levels are plotted retrospectively as they are based on pivots.
🔶 USAGE
The Master Pattern indicator detects contraction phases in the markets (characterized by a lower high and higher low). The resulting average from the latest swing high/low is used as expansion line. Price breaking the contraction range upwards highlights a bullish master pattern, while a break downward highlights a bearish master pattern.
During the expansion phase price can tend to be stationary around the expansion level. This phase is then often followed by the price significantly deviating from the expansion line, highlighting a markup phase.
Expansion lines can also be used as support/resistance levels.
🔹 Major/Minor Patterns
The script can classify patterns as major or minor patterns.
Major patterns occur when price breaks both the upper and lower extremity of a contraction range, with their contraction area highlighted with a border, while minor patterns have only a single extremity broken.
🔶 SETTINGS
Contraction Detection Lookback: Lookback used to detect the swing points used to detect the contraction range.
Liquidity Levels: Lookback for the swing points detection used as liquidity levels. Higher values return longer term liquidity levels.
Show Major Pattern: Display major patterns.
Show Minor Pattern: Display minor patterns.
BladeSCALPER by MetaSignalsProBladeSCALPER
The sharpest tool to scalp M and W patterns
--------------------------------------------------------------------------
✔️ Get a clear signal of the next probable reversal move
✔️ Get instantly the zone where the price will probably get attracted to
✔️ Adjust TP1/TP2/TP3 accordingly to the PowerZONES
✔️ Check the winning rate of the M & W patterns on a time period
✔️ Optimize the probability of success of the M & W patterns
---------------------------------------------------------------------------
📌 For who?
---------------
Initialy, scalping is based on small moves, supposedly more predictable than big ones and repeating this operation many times.
For that, scalping means usally daytrading and not everybody can/want to be a daytrader: managing one's emotions is just critical;
But you can also use this indicator on a bigger time frame and trade when you want the M & Ws!
So basicaly BladeSCALPER is for anybody who wants to trade succesfully M&W patterns whatever Timeframe, whatever asset!
📌 For which asset?
-------------------------
BladeSCALPER is universal and works fine on all assets and all time-frames;
📌Why we made these innovations?
--------------------------------------------
"Double Tops" and "Double Bottoms", commonely called "M" and "W" as the letter explicitely shows these patterns, are some of the most predictive patterns you can find.
To exploit them, we needed to have an all in one tool:
◾ a very sharp scalping and innovative tool with embed statistics
◾ identify Risk/Reward ratio for TakeProfits
◾ and advanced Supports and Resistances information i.e the PowerZONES
📌 How to trade with BladeSCALPER ?
-----------------------------------------------
🔹 ScalpUP / ScalpDOWN Signals
The signals are given when the patterns of M and W are identified, in real time and do not repaint.
☝️ Quite often the Market will test the bottoms and the tops before validating such a figure;
👉 Only enter the trade when the candle closes clearly inside the coloured zone and not immediately on the signal.
🔹 PowerZONES
We innovated on the basic Supports and Resistances concept by adding new features with:
◾ zones that correspond better to real life trading than lines
◾ zones that change color depending of their position vs price : they turn red is the price is below them and blue if they are above.
◾ strength / attractivity of these zones = how many times the Support/Resistance have been touched in the past that will magnetize the price
◾ and distance between these zones to give a clear picture
Importance of the PowerZONES
In the current version, the TPs do not adjust to the PowerZONES, precisely to be able to keep a global statistical view;
☝️ But when you plan to trade on a signal, the real relevance is to adjust them according to the PowerZONES, of course;
👉 When buying, place your TPs just below the consecutive PowerZONES that the price could test
👉 When selling, place them just above the consecutive PowerZONES
🔹 TP1/TP2/TP3
TakeProfits are set theoretically and based on 3 risk/reward ratios: 1 / 1.5 / 2 ;
But of course this is just a setting to get an overall view of the effectiveness of the pattern on the current asset;
if you change these settings, you'll see that the Stats change accordingly.
☝️ Again, when you plan to trade on a signal, the real relevance is to adjust them according to the PowerZONES, of course;
🔹 StatsPANEL
With this innovative feature you can now see immediately
◾ the probability of win, based on the past patterns
◾ the exacts number of trades that have reached the TP1/TP2/TP3
◾ and more importantly the gains made by these trades in pips
We introduce also 2 important possibilities to improve the precision and relience of BladeSCALPER
◾ the PatternFACTOR can be changed; it defines a key percentage of the M & W patterns
◾ the MoveringAverageFILTER can be activated to
◽ suppress M patterns when the price is below the selected MovingAverage
◽ suppress W patterns when the price is over the selected MovingAverage
👉 Modifying these variables will change immediately the statistics just like the position of the TP1/TP2/TP3 and HistoryMax variables.
📌 Importance of setting up a Multi TimeFrame and doing a trend analysis
------------------------------------------------------------------------------------------
Even if you are on a scalping mode, it is crucial you set up a Multi Time Frame workspace and that you conduct a trend analysis before entering the market.
If you don't, you won't maximize your chances;
No indicator is 100% reliable, because the market cannot be modelized; anyone who tells you otherwise is lying to your face;
However, a statistical approach to the market is possible, because agents are not incoherent.
This is the meaning of stats we apply on double tops and double bottoms;
But to reinforce this point, you need to know what's happening on the next higher time unit to get a global view.
To do this, it's important to do a trend analysis or have a trend analysis tool.
---------------------------------------------------------------------------------------------------
🎛️ Configuration
----------------------
◾ Buy/Sell Signals: choose if you want to see only W or only M pattern signals
◾ PowerZones: uncheck if you don't want to see them (not recommanded)
◾ RewardBoxText: uncheck if you don't want to see the words "Entry, TP1, TP2, TP3"
◾ TakeProfit1/TakeProfit2/TakeProfit3: by default correspond to the multiple of the risk zone in grey under/above "Entry" i.e it is the classic concept of Risk/Reward ratio
◾ PowerZoneTouch: sets the number of time the zone has been touched
◾ PowerZoneDensity: increase this number if you want the number of zones to increase and reversely
◾ RewardBoxLength: adjust the standard number to the length of the anticipated move in duration
◾ StopLossExtraPoints: for a W pattern (ScalpUP) will bring lower the lower border of the RewardBOX; in a M pattern (ScalpDOWN) will bring higher the higher border of the RewardBOX; it will automatically move the distance of the TP1/TP2/TP3
◾ HistoryMax: the number of units taken into account to set the PowerZONES and the past M & W patterns
◾ PatternFactor: defines a key percentage of the M & W patterns
◾ MovingAverageFilter:
◽ untick (by default) : the filter is OFF
◽ ticked : the filter is ON
◾ MovingAveragePeriod: choose the speed of the average
◾ MovingAverageType: choose among all the types of averages available
◾ Applied to: define on which available moment of the Price the average is applied (close, open, highest...)
🛠️ Calculation & Precisions
------------------------------------
🔹 TP1/TP2/TP3
the 3 risk/reward ratios: 1 / 1.5 / 2 are multiples of the height of the grey zone = distance between your StopLoss and the entry line;
🔹 %WIN
Note that the % of success (%WIN) must be entered correctly;
Your risk/reward ratio is key and more important than the % success of the signal; you can have a % success of 30% (%WIN) which creates more points earned than a % success of 60% depending on your risk/reward ratio = the position of your TPs;
🔹 Calculation of points/pips
These are full points and we don't calculate partial outputs.
So if you have a tp1 at 20 and a tp2 at 100, if you get to tp2 you get 100 and not 20+100.
Stoplosses are of course calculated in negative.
🔹 PowerZONES
The originality of our concept is to test how many times a zone has been touched
The more the market has touched this zone the more probable it becomes a strategic zone where the liquidity will accumulate and thus will be chased!
Supply and Demand Based Pattern [RH]This indicator focuses on detecting RBR and DBD patterns, which signify periods of increased momentum and potential continuation or reversal of the prevailing trend.
The RBR pattern consists of a rally (upward movement), followed by a base (consolidation or retracement), and then another rally. It suggests that the upward momentum may persist and provide trading opportunities.
On the other hand, the DBD pattern comprises a drop (downward movement), followed by a base, and then another drop. It indicates that the downward momentum might continue, offering potential shorting opportunities.
Bullish(RBR) example:
Bearish(DBD) example:
1. The bullish (RBR) and bearish (DBD) patterns share the same underlying logic, only differing in their directionality.
2. For both RBR and DBD patterns, the first rise/drop can consist of one or multiple candles. However, in the case of multiple candles, all candles must exhibit a bullish nature for RBR and a bearish nature for DBD.
Example:
3. It is a prerequisite for the first rise/drop to include at least one candle with a defined percentage of health, as determined by the user.
4. The base, following the first rise/drop, may comprise one or multiple candles.
Example:
5. To maintain consistency, the base is not allowed to retrace beyond 80%, although this value can be adjusted by the user.
6. Similar to the first rise/drop, the second rise/drop in both RBR and DBD patterns can consist of one or multiple candles. However, all candles within this phase must demonstrate a bullish nature for RBR and a bearish nature for DBD.
7. Confirmation of the bullish (RBR) pattern occurs when a candle closes above the high of the first rise. Conversely, the bearish (DBD) pattern is confirmed when a candle closes below the low of the first drop.
Example:
Alerts can be set for all bullish and bearish pattern or for the first pattern in the range of similar pattern.
Triangle and Wedge Break [Only Long]The Triangle pattern
Triangle chart patterns are one of the most resourceful and practically advanced templates in technical analysis. These charts are the underpinnings of a well-calculated move when it comes to the assessment of risk and reward ratios. The pattern is often represented by drawing trendlines along an intersecting price scale, which suggests a stoppage in the ongoing trend.
The Wedge pattern
It is a price pattern that is denoted by the intersection of trend lines on a price chart. The opposing trend lines are drawn to connect the respective highs and lows of a price activity progression over the stretch of 10 to 50 periods. The lines can exhibit the magnitude of the highs and lows, signifying whether they are ascending or descending; this pattern gives the appearance of a wedge, hence the name. The wedge pattern has a good track record for forecasting price reversals.
This script is one of an attempt to help traders look for triangles and wedge patterns as soon as a breakout occurs.
How this script works:
1. First, it identifies the two tops of the pattern using the ta.pivot() function.
2. Next, it draws a trendline connecting those 2 tops, top A and top C (called the upper resistance line of the pattern).
3. Next, it draws a trendline connecting those 2 peaks (called the upper resistance line of the pattern).
4. Right now it will test 2 bottoms of the pattern (bottom B and bottom D).
5. Next, it will measure the ratio of waves AB, BC and CD (for example with triangle pattern, we need wave BC to retrace about 0.5 wave AB, same for wave CD and wave BC).
6. Finally, it will alert the trader if a break of a valid pattern occurs.
In addition, this script has more information about average trading volume, volume of candlestick breakouts. Those factors help us further confirm to enter the order.
This script is not all, you should combine other methods to increase your win rate.
ABC finderI made this script a long time again and never released it. It is a ABC Pattern finding tool. You can adjust the "Bars Back" setting to include more or less bars in the pattern. I usually have it set to 10 or 15 these settings seem to work well on most assets. The scripts allows you to set up a trade box automatically and has a call out table to make prices levels more clear and easy to read. The trade box levels can be set by fixed percentage or by pattern based fib.
Hope it helps!
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
NSDT Fair Value GapThis script is our version of the "Fair Value Gap".
A Fair Value Gap is nothing more than a series of 3 candles with a gap between a candle high/low and a candle high/low two candles prior.
For example:
A Gap Up - the Low of a candle is higher than the High of two candles back.
A Gap Down - the High of a candle is lower than the Low of two candles back.
Typically, on a Gap Up, the trader would wait for the price to re-enter the Gap, and take a Long position.
Typically, on a Gap Down, the trader would wait for the price to re-enter the Gap, and take a Short position.
We found that simply trading through the Gaps (fill the gap) produced a better result. So we reversed the procedure and the colors to show our suggested direction.
We have added inputs so the trader can determine the size of the Gaps to be plotted on the chart. A minimum and maximum can be set.
The number of Gaps to be displayed can be adjusted.
There is a option to remove Gaps that had been filled, to help keep a clean chart.