Bjorgum Double Tap█ OVERVIEW
Double Tap is a pattern recognition script aimed at detecting Double Tops and Double Bottoms. Double Tap can be applied to the broker emulator to observe historical results, run as a trading bot for live trade alerts in real time with entry signals, take profit, and stop orders, or to simply detect patterns.
█ CONCEPTS
How Is A Pattern Defined?
Doubles are technical formations that are both reversal patterns and breakout patterns. These formations typically have a distinctive “M” or a “W” shape with price action breaking beyond the neckline formed by the center of the pattern. They can be recognized when a pivot fails to break when tested for a second time and the retracement that follows breaks beyond the key level opposite. This can trap entrants that were playing in the direction of the prior trend. Entries are made on the breakout with a target projected beyond the neckline equal to the height of the pattern.
Pattern Recognition
Patterns are recognized through the use of zig-zag; a method of filtering price action by connecting swing highs and lows in an alternating fashion to establish trend, support and resistance, or derive shapes from price action. The script looks for the highest or lowest point in a given number of bars and updates a list with the values as they form. If the levels are exceeded, the values are updated. If the direction changes and a new significant point is made, a new point is added to the list and the process starts again. Meanwhile, we scan the list of values looking for the distinctive shape to form as previously described.
█ STRATEGY RESULTS
Back Testing
Historical back testing is the most common method to test a strategy due in part to the general ease of gathering quick results. The underlying theory is that any strategy that worked well in the past is likely to work well in the future, and conversely, any strategy that performed poorly in the past is likely to perform poorly in the future. It is easy to poke holes in this theory, however, as for one to accept it as gospel, one would have to assume that future results will match what has come to pass. The randomness of markets may see to it otherwise, so it is important to scrutinize results. Some commonly used methods are to compare to other markets or benchmarks, perform statistical analysis on the results over many iterations and on differing datasets, walk-forward testing, out-of-sample analysis, or a variety of other techniques. There are many ways to interpret the results, so it is important to do research and gain knowledge in the field prior to taking meaningful conclusions from them.
👉 In short, it would be naive to place trust in one good backtest and expect positive results to continue. For this reason, results have been omitted from this publication.
Repainting
Repainting is simply the difference in behaviour of a strategy in real time vs the results calculated on the historical dataset. The strategy, by default, will wait for confirmed signals and is thus designed to not repaint. Waiting for bar close for entires aligns results in the real time data feed to those calculated on historical bars, which contain far less data. By doing this we align the behaviour of the strategy on the 2 data types, which brings significance to the calculated results. To override this behaviour and introduce repainting one can select "Recalculate on every tick" from the properties tab. It is important to note that by doing this alerts may not align with results seen in the strategy tester when the chart is reloaded, and thus to do so is to forgo backtesting and restricts a strategy to forward testing only.
👉 It is possible to use this script as an indicator as opposed to a full strategy by disabling "Use Strategy" in the "Inputs" tab. Basic alerts for detection will be sent when patterns are detected as opposed to complex order syntax. For alerts mid-bar enable "Recalculate on every tick" , and for confirmed signals ensure it is disabled.
█ EXIT ORDERS
Limit and Stop Orders
By default, the strategy will place a stop loss at the invalidation point of the pattern. This point is beyond the pattern high in the case of Double Tops, or beneath the pattern low in the case of Double Bottoms. The target or take profit point is an equal-legs measurement, or 100% of the pattern height in the direction of the pattern bias. Both the stop and the limit level can be adjusted from the user menu as a percentage of the pattern height.
Trailing Stops
Optional from the menu is the implementation of an ATR based trailing stop. The trailing stop is designed to begin when the target projection is reached. From there, the script looks back a user-defined number of bars for the highest or lowest point +/- the ATR value. For tighter stops the user can look back a lesser number of bars, or decrease the ATR multiple. When using either Alertatron or Trading Connector, each change in the trail value will trigger an alert to update the stop order on the exchange to reflect the new trail price. This reduces latency and slippage that can occur when relying on alerts only as real exchange orders fill faster and remain in place in the event of a disruption in communication between your strategy and the exchange, which ensures a higher level of safety.
👉 It is important to note that in the case the trailing stop is enabled, limit orders are excluded from the exit criteria. Rather, the point in time that the limit value is exceeded is the point that the trail begins. As such, this method will exit by stop loss only.
█ ALERTS
Five Built-in 3rd Party Destinations
The following are five options for delivering alerts from Double Tap to live trade execution via third party API solutions or chat bots to share your trades on social media. These destinations can be selected from the input menu and alert syntax will automatically configure in alerts appropriately to manage trades.
Custom JSON
JSON, or JavaScript Object Notation, is a readable format for structuring data. It is used primarily to transmit data between a server and a web application. In regards to this script, this may be a custom intermediary web application designed to catch alerts and interface with an exchange API. The JSON message is a trade map for an application to read equipped with where its been, where its going, targets, stops, quantity; a full diagnostic of the current state and its previous state. A web application could be configured to follow the messages sent in this format and conduct trades in sync with alerts running on the TV server.
Below is an example of a rendered JSON alert:
{
"passphrase": "1234",
"time": "2022-05-01T17:50:05Z",
"ticker": "ETHUSDTPERP",
"plot": {
"stop_price": 2600.15,
"limit_price": 3100.45
},
"strategy": {
"position_size": 0.1,
"order_action": "buy",
"market_position": "long",
"market_position_size": 0,
"prev_market_position": "flat",
"prev_market_position_size": 0
}
}
Trading Connector
Trading Connector is a third party fully autonomous Chrome extension designed to catch alert webhooks from TradingView and interface with MT4/MT5 to execute live trades from your machine. Alerts to Trading Connector are simple; just select the destination from the input drop down menu, set your ticker in the "TC Ticker" box in the "Alert Strings" section and enter your URL in the alert window when configuring your alert.
Alertatron
Alertatron is an automated algo platform for cryptocurrency trading that is designed to automate your trading strategies. Although the platform is currently restricted to crypto, it offers a versatile interface with high flexibility syntax for complex market orders and conditions. To direct alerts to Alertatron, select the platform from the 3rd party drop down, configure your API key in the ”Alertatron Key” box and add your URL in the alert message box when making alerts.
3 Commas
3 Commas is an easy and quick to use click-and-go third party crypto API solution. Alerts are simple without overly complex syntax. Messages are simply pasted into alerts and executed as alerts are triggered. There are 4 boxes at the bottom of the "Inputs" tab where the appropriate messages to be placed. These messages can be copied from 3 Commas after the bots are set up and pasted directly into the settings menu. Remember to select 3 Commas as a destination from the third party drop down and place the appropriate URL in the alert message window.
Discord
Some may wish to share their trades with their friends in a Discord chat via webhook chat bot. Messages are configured to notify of the pattern type with targets and stop values. A bot can be configured through the integration menu in a Discord chat to which you have appropriate access. Select Discord from the 3rd party drop down menu and place your chat bot URL in the alert message window when configuring alerts.
👉 For further information regarding alert setup, refer to the platform specific instructions given by the chosen third party provider.
█ IMPORTANT NOTES
Setting Alerts
For alert messages to be properly delivered on order fills it is necessary to place the following placeholder in the alert message box when creating an alert.
{{strategy.order.alert_message}}
This placeholder will auto-populate the alert message with the appropriate syntax that is designated for the 3rd party selected in the user menu.
Order Sizing and Commissions
The values that are sent in alert messages are populated from live metrics calculated by the strategy. This means that the actual values in the "Properties" tab are used and must be set by the user. The initial capital, order size, commission, etc. are all used in the calculations, so it is important to set these prior to executing live trades. Be sure to set the commission to the values used by the exchange as well.
👉 It is important to understand that the calculations on the account size take place from the beginning of the price history of the strategy. This means that if historical results have inflated or depleted the account size from the beginning of trade history until now, the values sent in alerts will reflect the calculated size based on the inputs in the "Properties" tab. To start fresh, the user must set the date in the "Inputs" tab to the current date as to remove trades from the trade history. Failure to follow this instruction can result in an unexpected order size being sent in the alert.
█ FOR PINECODERS
• With the recent introduction of matrices in Pine, the script utilizes a matrix to track pivot points with the bars they occurred on, while tracking if that pivot has been traded against to prevent duplicate detections after a trade is exited.
• Alert messages are populated with placeholders ; capability that previously was only possible in alertcondition() , but has recently been extended to `strategy.*()` functions for use in the `alert_message` argument. This allows delivery of live trade values to populate in strategy alert messages.
• New arguments have been added to strategy.exit() , which allow differentiated messages to be sent based on whether the exit occurred at the stop or the limit. The new arguments used in this script are `alert_profit` and `alert_loss` to send messages to Discord
Search in scripts for "pattern"
BjCandlePatternsLibrary "BjCandlePatterns"
Patterns is a Japanese candlestick pattern recognition Library for developers. Functions here within detect viable setups in a variety of popular patterns. Please note some patterns are without filters such as comparisons to average candle sizing, or trend detection to allow the author more freedom.
doji(dojiSize, dojiWickSize) Detects "Doji" candle patterns
Parameters:
dojiSize : (float) The relationship of body to candle size (ie. body is 5% of total candle size). Default is 5.0 (5%)
dojiWickSize : (float) Maximum wick size comparative to the opposite wick. (eg. 2 = bottom wick must be less than or equal to 2x the top wick). Default is 2
Returns: (series bool) True when pattern detected
dLab(showLabel, labelColor, textColor) Produces "Doji" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
bullEngulf(maxRejectWick, mustEngulfWick) Detects "Bullish Engulfing" candle patterns
Parameters:
maxRejectWick : (float) Maximum rejection wick size.
The maximum wick size as a percentge of body size allowable for a top wick on the resolution candle of the pattern. 0.0 disables the filter.
eg. 50 allows a top wick half the size of the body. Default is 0% (Disables wick detection).
mustEngulfWick : (bool) input to only detect setups that close above the high prior effectively engulfing the candle in its entirety. Default is false
Returns: (series bool) True when pattern detected
bewLab(showLabel, labelColor, textColor) Produces "Bullish Engulfing" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
bearEngulf(maxRejectWick, mustEngulfWick) Detects "Bearish Engulfing" candle patterns
Parameters:
maxRejectWick : (float) Maximum rejection wick size.
The maximum wick size as a percentge of body size allowable for a bottom wick on the resolution candle of the pattern. 0.0 disables the filter.
eg. 50 allows a botom wick half the size of the body. Default is 0% (Disables wick detection).
mustEngulfWick : (bool) Input to only detect setups that close below the low prior effectively engulfing the candle in its entirety. Default is false
Returns: (series bool) True when pattern detected
bebLab(showLabel, labelColor, textColor) Produces "Bearish Engulfing" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
hammer(ratio, shadowPercent) Detects "Hammer" candle patterns
Parameters:
ratio : (float) The relationship of body to candle size (ie. body is 33% of total candle size). Default is 33%.
shadowPercent : (float) The maximum allowable top wick size as a percentage of body size. Default is 5%.
Returns: (series bool) True when pattern detected
hLab(showLabel, labelColor, textColor) Produces "Hammer" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
star(ratio, shadowPercent) Detects "Star" candle patterns
Parameters:
ratio : (float) The relationship of body to candle size (ie. body is 33% of total candle size). Default is 33%.
shadowPercent : (float) The maximum allowable bottom wick size as a percentage of body size. Default is 5%.
Returns: (series bool) True when pattern detected
ssLab(showLabel, labelColor, textColor) Produces "Star" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
dragonflyDoji() Detects "Dragonfly Doji" candle patterns
Returns: (series bool) True when pattern detected
ddLab(showLabel, labelColor) Produces "Dragonfly Doji" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
Returns: (series label) A label visible at the chart level intended for the title pattern
gravestoneDoji() Detects "Gravestone Doji" candle patterns
Returns: (series bool) True when pattern detected
gdLab(showLabel, labelColor, textColor) Produces "Gravestone Doji" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
tweezerBottom(closeUpperHalf) Detects "Tweezer Bottom" candle patterns
Parameters:
closeUpperHalf : (bool) input to only detect setups that close above the mid-point of the candle prior increasing its bullish tendancy. Default is false
Returns: (series bool) True when pattern detected
tbLab(showLabel, labelColor, textColor) Produces "Tweezer Bottom" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
tweezerTop(closeLowerHalf) Detects "TweezerTop" candle patterns
Parameters:
closeLowerHalf : (bool) input to only detect setups that close below the mid-point of the candle prior increasing its bearish tendancy. Default is false
Returns: (series bool) True when pattern detected
ttLab(showLabel, labelColor, textColor) Produces "TweezerTop" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
spinningTopBull(wickSize) Detects "Bullish Spinning Top" candle patterns
Parameters:
wickSize : (float) input to adjust detection of the size of the top wick/ bottom wick as a percent of total candle size. Default is 34%, which ensures the wicks are both larger than the body.
Returns: (series bool) True when pattern detected
stwLab(showLabel, labelColor, textColor) Produces "Bullish Spinning Top" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
spinningTopBear(wickSize) Detects "Bearish Spinning Top" candle patterns
Parameters:
wickSize : (float) input to adjust detection of the size of the top wick/ bottom wick as a percent of total candle size. Default is 34%, which ensures the wicks are both larger than the body.
Returns: (series bool) True when pattern detected
stbLab(showLabel, labelColor, textColor) Produces "Bearish Spinning Top" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
spinningTop(wickSize) Detects "Spinning Top" candle patterns
Parameters:
wickSize : (float) input to adjust detection of the size of the top wick/ bottom wick as a percent of total candle size. Default is 34%, which ensures the wicks are both larger than the body.
Returns: (series bool) True when pattern detected
stLab(showLabel, labelColor, textColor) Produces "Spinning Top" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
morningStar() Detects "Bullish Morning Star" candle patterns
Returns: (series bool) True when pattern detected
msLab(showLabel, labelColor, textColor) Produces "Bullish Morning Star" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
eveningStar() Detects "Bearish Evening Star" candle patterns
Returns: (series bool) True when pattern detected
esLab(showLabel, labelColor, textColor) Produces "Bearish Evening Star" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
haramiBull() Detects "Bullish Harami" candle patterns
Returns: (series bool) True when pattern detected
hwLab(showLabel, labelColor, textColor) Produces "Bullish Harami" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
haramiBear() Detects "Bearish Harami" candle patterns
Returns: (series bool) True when pattern detected
hbLab(showLabel, labelColor, textColor) Produces "Bearish Harami" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
haramiBullCross() Detects "Bullish Harami Cross" candle patterns
Returns: (series bool) True when pattern detected
hcwLab(showLabel, labelColor, textColor) Produces "Bullish Harami Cross" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
haramiBearCross() Detects "Bearish Harami Cross" candle patterns
Returns: (series bool) True when pattern detected
hcbLab(showLabel, labelColor) Produces "Bearish Harami Cross" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
Returns: (series label) A label visible at the chart level intended for the title pattern
marubullzu() Detects "Bullish Marubozu" candle patterns
Returns: (series bool) True when pattern detected
mwLab(showLabel, labelColor, textColor) Produces "Bullish Marubozu" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
marubearzu() Detects "Bearish Marubozu" candle patterns
Returns: (series bool) True when pattern detected
mbLab(showLabel, labelColor, textColor) Produces "Bearish Marubozu" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
abandonedBull() Detects "Bullish Abandoned Baby" candle patterns
Returns: (series bool) True when pattern detected
abwLab(showLabel, labelColor, textColor) Produces "Bullish Abandoned Baby" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
abandonedBear() Detects "Bearish Abandoned Baby" candle patterns
Returns: (series bool) True when pattern detected
abbLab(showLabel, labelColor, textColor) Produces "Bearish Abandoned Baby" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
piercing() Detects "Piercing" candle patterns
Returns: (series bool) True when pattern detected
pLab(showLabel, labelColor, textColor) Produces "Piercing" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
darkCloudCover() Detects "Dark Cloud Cover" candle patterns
Returns: (series bool) True when pattern detected
dccLab(showLabel, labelColor, textColor) Produces "Dark Cloud Cover" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
tasukiBull() Detects "Upside Tasuki Gap" candle patterns
Returns: (series bool) True when pattern detected
utgLab(showLabel, labelColor, textColor) Produces "Upside Tasuki Gap" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
tasukiBear() Detects "Downside Tasuki Gap" candle patterns
Returns: (series bool) True when pattern detected
dtgLab(showLabel, labelColor, textColor) Produces "Downside Tasuki Gap" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
risingThree() Detects "Rising Three Methods" candle patterns
Returns: (series bool) True when pattern detected
rtmLab(showLabel, labelColor, textColor) Produces "Rising Three Methods" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
fallingThree() Detects "Falling Three Methods" candle patterns
Returns: (series bool) True when pattern detected
ftmLab(showLabel, labelColor, textColor) Produces "Falling Three Methods" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
risingWindow() Detects "Rising Window" candle patterns
Returns: (series bool) True when pattern detected
rwLab(showLabel, labelColor, textColor) Produces "Rising Window" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
fallingWindow() Detects "Falling Window" candle patterns
Returns: (series bool) True when pattern detected
fwLab(showLabel, labelColor, textColor) Produces "Falling Window" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
kickingBull() Detects "Bullish Kicking" candle patterns
Returns: (series bool) True when pattern detected
kwLab(showLabel, labelColor, textColor) Produces "Bullish Kicking" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
kickingBear() Detects "Bearish Kicking" candle patterns
Returns: (series bool) True when pattern detected
kbLab(showLabel, labelColor, textColor) Produces "Bearish Kicking" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
lls(ratio) Detects "Long Lower Shadow" candle patterns
Parameters:
ratio : (float) A relationship of the lower wick to the overall candle size expressed as a percent. Default is 75%
Returns: (series bool) True when pattern detected
llsLab(showLabel, labelColor, textColor) Produces "Long Lower Shadow" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
lus(ratio) Detects "Long Upper Shadow" candle patterns
Parameters:
ratio : (float) A relationship of the upper wick to the overall candle size expressed as a percent. Default is 75%
Returns: (series bool) True when pattern detected
lusLab(showLabel, labelColor, textColor) Produces "Long Upper Shadow" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
bullNeck() Detects "Bullish On Neck" candle patterns
Returns: (series bool) True when pattern detected
nwLab(showLabel, labelColor, textColor) Produces "Bullish On Neck" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
bearNeck() Detects "Bearish On Neck" candle patterns
Returns: (series bool) True when pattern detected
nbLab(showLabel, labelColor, textColor) Produces "Bearish On Neck" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
soldiers(wickSize) Detects "Three White Soldiers" candle patterns
Parameters:
wickSize : (float) Maximum allowable top wick size throughout pattern expressed as a percent of total candle height. Default is 5%
Returns: (series bool) True when pattern detected
wsLab(showLabel, labelColor, textColor) Produces "Three White Soldiers" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
crows(wickSize) Detects "Three Black Crows" candle patterns
Parameters:
wickSize : (float) Maximum allowable bottom wick size throughout pattern expressed as a percent of total candle height. Default is 5%
Returns: (series bool) True when pattern detected
bcLab(showLabel, labelColor, textColor) Produces "Three Black Crows" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
triStarBull() Detects "Bullish Tri-Star" candle patterns
Returns: (series bool) True when pattern detected
tswLab(showLabel, labelColor, textColor) Produces "Bullish Tri-Star" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
triStarBear() Detects "Bearish Tri-Star" candle patterns
Returns: (series bool) True when pattern detected
tsbLab(showLabel, labelColor, textColor) Produces "Bearish Tri-Star" identifier label
Parameters:
showLabel : (bool) Shows label when input is true. Default is false
labelColor : (series color) Color of the label border and arrow
textColor : (series color) Text color
Returns: (series label) A label visible at the chart level intended for the title pattern
wrap(cond, barsBack, borderColor, bgcolor) Produces a box wrapping the highs and lows over the look back.
Parameters:
cond : (series bool) Condition under which to draw the box.
barsBack : (series int) the number of bars back to begin drawing the box.
borderColor : (series color) Color of the four borders. Optional. The default is color.gray.
bgcolor : (series color) Background color of the box. Optional. The default is color.gray.
Returns: (series box) A box who's top and bottom are above and below the highest and lowest points over the lookback
topWick() returns the top wick size of the current candle
Returns: (series float) A value equivelent to the distance from the top of the candle body to its high
bottomWick() returns the bottom wick size of the current candle
Returns: (series float) A value equivelent to the distance from the bottom of the candle body to its low
body() returns the body size of the current candle
Returns: (series float) A value equivelent to the distance between the top and the bottom of the candle body
highestBody() returns the highest body of the current candle
Returns: (series float) A value equivelent to the highest body, whether it is the open or the close
lowestBody() returns the lowest body of the current candle
Returns: (series float) A value equivelent to the highest body, whether it is the open or the close
barRange() returns the height of the current candle
Returns: (series float) A value equivelent to the distance between the high and the low of the candle
bodyPct() returns the body size as a percent
Returns: (series float) A value equivelent to the percentage of body size to the overall candle size
midBody() returns the price of the mid-point of the candle body
Returns: (series float) A value equivelent to the center point of the distance bewteen the body low and the body high
bodyupGap() returns true if there is a gap up between the real body of the current candle in relation to the candle prior
Returns: (series bool) true if there is a gap up and no overlap in the real bodies of the current candle and the preceding candle
bodydwnGap() returns true if there is a gap down between the real body of the current candle in relation to the candle prior
Returns: (series bool) true if there is a gap down and no overlap in the real bodies of the current candle and the preceding candle
gapUp() returns true if there is a gap down between the real body of the current candle in relation to the candle prior
Returns: (series bool) true if there is a gap down and no overlap in the real bodies of the current candle and the preceding candle
gapDwn() returns true if there is a gap down between the real body of the current candle in relation to the candle prior
Returns: (series bool) true if there is a gap down and no overlap in the real bodies of the current candle and the preceding candle
dojiBody() returns true if the candle body is a doji
Returns: (series bool) true if the candle body is a doji. Defined by a body that is 5% of total candle size
Elliott Wave Pattern AnalyzerElliott Wave Pattern Analyzer
Overview
This indicator automatically detects Elliott Wave impulse patterns and diagonal formations on your chart. It analyzes price structure based on classic Elliott Wave rules and displays wave counts with confidence scores, Fibonacci projections, and invalidation levels.
Why I Built This
After reading Glenn Neely's book on Elliott Wave theory, I wanted to put my learning into practice by building something tangible. There's no better way to understand a concept than trying to code it!
I'll be honest – corrective wave patterns (zigzags, flats, triangles, combinations) were simply too complex for me to implement reliably. So instead, I focused on what I could manage: impulse waves and diagonal patterns. Maybe someday I'll tackle the corrections, but for now, this is my humble contribution.
The retracement visualization style was inspired by LuxAlgo's elegant approach – credit where credit is due!
How It Works
1. Wave Detection
The indicator uses pivot points to identify potential 5-wave structures:
WaveRuleWave 2Cannot retrace more than 100% of Wave 1Wave 3Cannot be the shortest among Waves 1, 3, 5Wave 4Should not overlap Wave 1 territory (impulse)Wave 5Completes the motive structure
2. Pattern Types
Impulse Waves
Classic 5-wave motive structure
Wave 3 typically extends (≥1.618 of Wave 1)
Strict mode enforces all Elliott rules
Diagonal Patterns
Ending diagonal (wedge-shaped)
Waves progressively contract
Lines 1-3 and 2-4 converge to an apex
Often signals trend exhaustion
3. Confidence Scoring
Each pattern receives a confidence score (0-100%) based on:
Fibonacci ratio adherence
Wave proportion relationships
Rule compliance
Structural clarity
Only patterns exceeding your threshold (default: 60%) are displayed.
4. Fibonacci Projections
After Wave 5 completion, the indicator projects potential retracement levels:
0.382, 0.500, 0.618, 0.786 of the entire impulse
5. Extension Channel
Connects Wave 0 origin to the retracement low, projecting:
0.618, 1.000, 1.272, 1.618 extensions
Optional extended levels: 2.000, 2.618, 4.236
6. Invalidation Levels
Shows the price level where the wave count becomes invalid – helping you know when your analysis is wrong.
Settings Explained
Impulse Wave Settings
Pivot Length: Sensitivity of wave detection (recommended: 5, 7, 14)
Strict Mode: Enforce all classic Elliott rules
Min Wave 3 Extension: Minimum ratio for Wave 3 (default: 1.618)
Diagonal Wave Settings
Allow Wave 4-1 Overlap: Required for valid diagonals
Extend Trendline: Project diagonal boundaries forward
Projection Settings
Fibonacci Levels: Customize retracement targets
Extension Bars: How far projections extend on chart
Pattern Management
Max Patterns: Limit displayed patterns to reduce clutter
Pattern Lifetime: Auto-remove old patterns after X bars
Use Cases
Trend Trading: Enter on Wave 3 or Wave 5 breakouts
Reversal Spotting: Diagonal completion often signals reversals
Target Setting: Use Fibonacci extensions for take-profit levels
Risk Management: Invalidation levels provide clear stop-loss references
Notes
This indicator uses pivot detection and may repaint – signals are confirmed after the specified pivot length
Designed for educational and analytical purposes, not as a signal generator
Elliott Wave analysis is subjective – this is my algorithmic interpretation
Works best on liquid markets with clear trend structure
Not financial advice – always do your own research
Re-publishing Notice
This indicator was previously blocked due to some house rule violations on my part. I've recently had time to review and fix those issues, and I'm now re-publishing a compliant version. Thanks for your patience!
Feedback Welcome
I'm still learning Elliott Wave theory myself, so if you spot any issues or have suggestions for improvement, please leave a comment. Let's learn together!
Happy trading! 📈
Pine Script® indicator
Measured Pattern Move (Bulkowski) [SS]Hey everyone,
This is the Measured Pattern Move using Bulkowski's process for measured move calculation.
What the indicator does:
The indicator has the associated measured move across 20 of the most common and frequent Bulkowski patterns, including:
Double Bottom / Adam Eve Bottom
Double Top / Adam Eve Top
Inverse Head and Shoulders
Bear Flag
Bull Flag
Horn Bottom
Horon Top
Broadening Top
Descending Broadening Wedge
Broadening Bottoms
Broadening Tops
Cup and Handle
Inverted cup and handle
Diamond Bottom
Diamond Top
Falling Wedge
Rising Wedge
Pipe Bottom
Pipe Top
Head and Shoulders
It will calculate the measured move according to the Bulkowski process.
What is the Bulkowski Process?
Each move has an associated continuation percentage, which Bulkowski has studied, analyzed and concluded statistically.
For example, Double tops have a continuation percent of 54%. Bear flags, 47%. These are "constants" that are associated with the pattern.
Bulkowski applies them to the daily, but how I have formulated this, it can be used on all timeframes, and with the constant, it will correctly calculate the measured move of the pattern.
What this indicator DOES NOT DO
This indicator will not identify the pattern for you.
I tried this using Dynamic Time Warping (DTW) using my own pre-trained Bulkowski model in R. I was successfully able to get Pinescript to calculate DTW which was amazing! But applying it to all these patterns actually went over the execution time limit, which is understandable.
As such, you will need to identify the pattern yourself, then use this indicator to hilight the pattern and it will calculate the measured move based on the constant and the pattern range.
Let's look at some examples:
Use examples
Double bottom / adam eve bottom on SPY on the 1-Minute chart
Adam and Eve Double Bottom QQQ 1-Hour Chart
Adam Eve Double Bottom MSFT Daily Chart
Bearish Head and Shoulders Pattern MSFT Daily
You get the point.
How to use the indicator
To use the indicator, identify the pattern of interest to you.
Then, highlight the pattern using the indicator (it will ask you to select start time of the pattern and end time of the pattern). The indicator will then highlight the pattern and calculate the measured move, as seen in the examples above.
Best approaches
To make the most of the indicator, its best to draw out your pattern and wait for an actual break, the point of the break is usually the end of the pattern formation.
From here, you will then apply this indicator to calculate the expected up or down move.
Let me show you an example:
Here we see CME_MINI:ES1! has made an Adam bottom pattern. We know the Eve should be forming soon and it indeed does:
We mark the top of the pattern like so:
Then we use our Measured move indicator to calculate the measured move:
Measured move here for CME_MINI:ES1! is 6,510.
Now let's see....
Voila!
Selecting the Pattern
After you highlight the selected pattern, in the indicator settings, simply select the type of pattern it is, for example "head and shoulders" or "Broadening wedge", etc.
The indicator will then adjust its measurements to the appropriate constant and direction.
Concluding remarks
That is the indicator!
It is helpful for determining the actual projected move of a pattern on breakout.
Remember, it does not find the pattern for you , you are responsible for identifying the pattern. But this will calculate the actual TP of the pattern for you, without you having to do your own calculations.
I hope you find it useful, I actually use this indicator every day, especially on the lower timeframes!
And you will find, the more you use it, the better you get at recognizing significant patterns!
If you are not aware of these patterns, Bulkowski lists all of this information freely accessible on his website. I cannot link it here but you can just Google him and he has graciously made his information public and free!
That's it, I hope you enjoy and safe trades!
Disclaimer
This is not my intellectual property. The pattern calculations come from the work of Thomas Bulkowski and not myself. I simply coded this into an indicator using his publicly accessible information.
You can get more information from Bulkowski's official website about his work and patterns.
Pine Script® indicator
True Seasonal Pattern [tradeviZion]True Seasonal Pattern: Uncover Hidden Market Cycles
Markets have rhythms and patterns that repeat with surprising regularity. The True Seasonal Pattern indicator reveals these hidden cycles across different timeframes, helping you anticipate potential market movements based on historical seasonal tendencies.
What This Indicator Does
The True Seasonal Pattern analyzes years of historical price data to identify recurring seasonal trends. It then plots these patterns on your chart, showing you both the historical pattern and future projection based on past seasonal behavior.
Automatic Timeframe Detection: Works with Monthly, Weekly, and Daily charts
Historical Pattern Analysis: Analyzes up to 100 years of data (customizable)
Future Projection: Projects the seasonal pattern ahead on your chart
Smart Smoothing: Applies appropriate smoothing based on your timeframe
How to Use This Indicator
Add the indicator to a Daily, Weekly, or Monthly chart (not designed for intraday timeframes)
The indicator automatically detects your chart's timeframe
The blue line shows the historical seasonal pattern
Watch for potential turning points in the pattern that align with other technical signals
Seasonal patterns work best as a supporting factor in your analysis, not as standalone trading signals. They are particularly effective in markets with well-established seasonal influences.
Best Applications
Futures Markets: Commodities and futures often show strong seasonal tendencies due to production cycles, weather patterns, and economic factors
Stock Indices: Many stock markets demonstrate regular seasonal patterns (like the "Sell in May" phenomenon)
Individual Stocks: Companies with seasonal business cycles often show predictable price patterns
Practical Applications
Identify potential turning points based on historical seasonal patterns
Plan entries and exits around seasonal tendencies
Add seasonal context to your existing technical analysis
Understand why certain months or periods might show consistent behavior
Pro Tip: For best results, use this tool on instruments with at least 5+ years of historical data. Longer timeframes often reveal more reliable seasonal patterns.
Important Notes
This indicator works best on Daily, Weekly, and Monthly timeframes - not intraday charts
Seasonal patterns are tendencies, not guarantees
Always combine seasonal analysis with other technical tools
Past patterns may not repeat exactly in the future
// Sample of the seasonal calculation approach
float yearHigh = array.max(currentYearHighs)
float yearLow = array.min(currentYearLows)
// Calculate seasonality for each period
for i = 0 to array.size(currentYearCloses) - 1
float periodClose = array.get(currentYearCloses, i)
if not na(periodClose) and yearHigh != yearLow
float seasonality = (periodClose - yearLow) / (yearHigh - yearLow) * 100
I developed this indicator to help traders incorporate seasonal analysis into their trading approach without the complexity of traditional seasonal tools. Whether you're analyzing agricultural commodities, energy futures, or stock indices, understanding the seasonal context can provide valuable insights for your trading decisions.
Remember: Markets don't always follow seasonal patterns, but when they do, being aware of these tendencies can give you a meaningful edge in your analysis.
Pine Script® indicator
Engulfing Pattern & Impulse [UAlgo]The Engulfing Pattern & Impulse is a tool designed for technical traders who utilize price action and volume analysis to assess market trends and potential reversals. This indicator identifies two powerful trading signals: Engulfing Patterns and Volume Impulses, which are essential components for evaluating potential bullish or bearish market momentum.
Engulfing Patterns are classic candlestick formations often associated with reversals or trend continuations, depending on the overall trend context. This indicator highlights both bullish and bearish engulfing patterns based on configurable criteria such as trend detection settings, comparison with average body size, and a customizable body multiplier for validation. The Volume Impulse feature signals moments of significant volume compared to historical levels, which often precede substantial price movements. Together, these features provide traders with a versatile tool for better timing entry and exit points.
The indicator also offers an adaptive trend detection system, allowing traders to choose from multiple methods (e.g., SMA50 or SMA50/SMA200 combinations) to assess the trend context, making it ideal for various market conditions.
🔶Key Features
Engulfing Pattern Detection: Identifies bullish and bearish engulfing patterns with customizable parameters, including body length and average size comparison.
Configurable trend basis: Choose between SMA50 or SMA50 with SMA200 to define trend direction.
Body size multiplier: Adjust the size threshold for valid engulfing patterns, providing flexibility based on market conditions.
Volume Impulse Signal: Highlights volume spikes that meet or exceed a specified multiplier, which can indicate increased buying or selling interest.
Customizable volume period and multiplier: Allows you to tailor the volume impulse detection based on the instrument’s average volume behavior.
Trend Detection Options: Select different trend detection methods to suit various trading styles and instruments.
SMA50-based detection: Classifies the trend based on the position of price relative to the 50-period SMA.
SMA50 and SMA200 combination: Incorporates a dual-moving average approach, classifying trends based on the relationship between price, SMA50, and SMA200.
Enhanced Visualization: Distinguishes bullish and bearish signals with customizable colors, providing clear and immediate visual cues for easy interpretation.
Custom label colors: Allows you to set distinct colors for bullish, bearish, and neutral signals for quick identification.
Pattern filtering: Enable or disable specific patterns (Bullish, Bearish, or Both) based on your trading preferences.
🔶 Interpreting Indicator
Bullish Engulfing Pattern: Indicates a potential bullish reversal in a downtrend. This signal occurs when a white candlestick with a body size exceeding a specified multiplier completely engulfs the previous black candlestick. The pattern will display a “BE” label below the candle if it meets the criteria, signaling potential upward momentum.
Bearish Engulfing Pattern: Indicates a potential bearish reversal in an uptrend. A black candlestick with a body size exceeding the specified multiplier fully engulfs the previous white candlestick, signaling possible downward movement. The “BE” label appears above the candle to denote this pattern.
Volume Impulse Up: Displays a “VI” label below the candle when the volume surpasses the defined multiplier, and the price closes higher than it opened, indicating strong upward buying interest.
Volume Impulse Down: Displays a “VI” label above the candle when the volume meets or exceeds the specified threshold, and the price closes lower than it opened, signaling strong selling pressure.
Indicator uses the SMA50 and SMA200 to determine trend direction due to their popularity in technical analysis as indicators of medium- and long-term trends. The SMA50 reflects the average price over the past 50 periods, providing insight into intermediate trends, while the SMA200 is often used to identify the broader trend direction. These SMAs help traders quickly assess whether the market is in an uptrend, downtrend, or consolidation phase, enhancing decision-making for both short-term and long-term strategies.
🔶 Disclaimer
Use with Caution: This indicator is provided for educational and informational purposes only and should not be considered as financial advice. Users should exercise caution and perform their own analysis before making trading decisions based on the indicator's signals.
Not Financial Advice: The information provided by this indicator does not constitute financial advice, and the creator (UAlgo) shall not be held responsible for any trading losses incurred as a result of using this indicator.
Backtesting Recommended: Traders are encouraged to backtest the indicator thoroughly on historical data before using it in live trading to assess its performance and suitability for their trading strategies.
Risk Management: Trading involves inherent risks, and users should implement proper risk management strategies, including but not limited to stop-loss orders and position sizing, to mitigate potential losses.
No Guarantees: The accuracy and reliability of the indicator's signals cannot be guaranteed, as they are based on historical price data and past performance may not be indicative of future results.
Pine Script® indicator
Candlestick Pattern DetectorCandlestick Pattern Detector
Overview
Welcome to the Candlestick Pattern Detector, a powerful tool designed to help traders identify key candlestick patterns on any chart. This indicator detects some of the most significant candlestick patterns and provides brief descriptions directly on the chart, making it easier for you to interpret market signals and make informed trading decisions.
Detected Patterns
Doji
Description: A Doji indicates market indecision. It occurs when the open and close prices are very close, suggesting a balance between bullish and bearish forces.
Signal: Possible trend reversal or continuation depending on the context.
Hammer
Description: A Hammer appears at the bottom of a downtrend, characterized by a small body and a long lower wick. It suggests that buyers are stepping in to push prices higher.
Signal: Bullish reversal.
Hanging Man
Description: The Hanging Man occurs at the top of an uptrend with a small body and a long lower wick. It indicates that selling pressure is starting to take over.
Signal: Bearish reversal.
Shooting Star
Description: The Shooting Star appears at the top of an uptrend with a small body and a long upper wick, indicating that buyers are losing control and sellers may push prices down.
Signal: Bearish reversal.
How to Use
Add to Chart: Click on the "Indicators" button in TradingView, search for "Candlestick Pattern Detector," and add it to your chart.
Visual Signals: The indicator will automatically mark detected patterns with labels on your chart.
Interpret Patterns: Use the brief descriptions provided with each detected pattern to understand market sentiment and potential price movements.
Conclusion
The Candlestick Pattern Detector is a helpful tool for traders of all levels, providing clear and concise information about key candlestick patterns. By integrating this indicator into your trading strategy, you can enhance your ability to read price action and make better trading decisions.
Pine Script® indicator
TrendGuard Flag Finder - Strategy [presentTrading]
Introduction and How It Is Different
In the vast world of trading strategies, the TrendGuard Flag Finder stands out as a unique blend of traditional flag pattern detection and the renowned SuperTrend indicator.
- A significant portion of the Flag Pattern detection is inspired by the "Flag Finder" code by @Amphibiantrading, which serves as one of foundational element of this strategy.
- While many strategies focus on either trend-following or pattern recognition, this strategy harmoniously combines both, offering traders a more holistic view of the market.
- The integration of the SuperTrend indicator not only provides a clear direction of the prevailing trend but also offers potential stop-loss levels, enhancing the strategy's risk management capabilities.
AAPL 1D chart
ETHBTC 6hr chart
Strategy: How It Works
The TrendGuard Flag Finder is primarily built on two pillars:
1. Flag Pattern Detection : At its core, the strategy identifies flag patterns, which are continuation patterns suggesting that the prevailing trend will resume after a brief consolidation. The strategy meticulously detects both bullish and bearish flags, ensuring traders can capitalize on opportunities in both rising and falling markets.
What is a Flag Pattern? A flag pattern consists of two main components:
1.1 The Pole : This is the initial strong price move, which can be either upwards (for bullish flags) or downwards (for bearish flags). The pole represents a strong surge in price in a particular direction, driven by significant buying or selling momentum.
1.2 The Flag : Following the pole, the price starts consolidating, moving against the initial trend. This consolidation forms a rectangular shape and is characterized by parallel trendlines. In a bullish flag, the consolidation will have a slight downward tilt, while in a bearish flag, it will have a slight upward tilt.
How the Strategy Detects Flags:
Identifying the Pole: The strategy first identifies a strong price movement over a user-defined number of bars. This movement should meet a certain percentage change to qualify as a pole.
Spotting the Flag: After the pole is identified, the strategy looks for a consolidation phase. The consolidation should be counter to the prevailing trend and should be contained within parallel lines. The depth (for bullish flags) or rally (for bearish flags) of this consolidation is calculated to ensure it meets user-defined criteria.
2. SuperTrend Integration : The SuperTrend indicator, known for its simplicity and effectiveness, is integrated into the strategy. It provides a dynamic line on the chart, signaling the prevailing trend. When prices are above the SuperTrend line, it's an indication of an uptrend, and vice versa. This not only confirms the flag pattern's direction but also offers a potential stop-loss level for trades.
When combined, these components allow traders to identify potential breakout (for bullish flags) or breakdown (for bearish flags) scenarios, backed by the momentum indicated by the SuperTrend.
Usage
To use the SuperTrend Enhanced Flag Finder:
- Inputs : Begin by setting the desired parameters. The strategy offers a range of user-controlled settings, allowing for customization based on individual trading preferences and risk tolerance.
- Visualization : Once the parameters are set, the strategy will identify and visually represent flag patterns on the chart. Bullish flags are represented in green, while bearish flags are in red.
- Trade Execution : When a breakout or breakdown is identified, the strategy provides entry signals. It also offers exit signals based on the SuperTrend, ensuring that traders can capitalize on the momentum while managing risk.
Default Settings
The strategy comes with a set of default settings optimized for general use:
- SuperTrend Parameters: Length set to 10 and Factor set to 5.0.
- Bull Flag Criteria: Max Flag Depth at 7, Max Flag Length at 10 bars, Min Flag Length at 3 bars, Prior Uptrend Minimum at 9%, and Flag Pole Length between 7 to 13 bars.
- Bear Flag Criteria: Similar settings adjusted for bearish patterns.
- Display Options: By default, both bullish and bearish flags are displayed, with breakout and breakdown points highlighted.
Pine Script® strategy
Candlestick PatternsShort Description: Identify and visualize 16 key candlestick patterns in real-time.
Long Description:
The Candlestick Pattern Detector is a powerful indicator designed to help traders identify and visualize 16 key candlestick patterns in real-time. This indicator overlays the identified patterns on the chart, making it easy for traders to spot potential trend reversals, continuations, or significant price movements.
The indicator detects the following candlestick patterns:
Bullish Engulfing
Bearish Engulfing
Bullish Harami
Bearish Harami
Bullish Piercing
Dark Cloud Cover
Hammer
Hanging Man
Inverted Hammer
Shooting Star
Morning Star
Evening Star
Three White Soldiers
Three Black Crows
Bullish Marubozu
Bearish Marubozu
Each pattern is labeled on the chart with its respective name and color-coded to indicate whether it's a bullish (green) or bearish (red) signal. This makes it easy for traders to quickly spot patterns and make informed decisions based on the detected signals.
To use the Candlestick Pattern Detector, simply add it to your TradingView chart, and it will automatically highlight the identified patterns on the price chart. The patterns are identified based on well-established candlestick pattern recognition techniques, giving traders a reliable tool to aid their technical analysis.
Whether you're a seasoned trader or just starting, the Candlestick Pattern Detector can be a valuable addition to your trading toolkit, helping you to identify potential trading opportunities based on classic candlestick patterns.
Pine Script® indicator
Sniffer
╭━━━╮╱╱╱╱╭━╮╭━╮
┃╭━╮┃╱╱╱╱┃╭╯┃╭╯
┃╰━━┳━╮╭┳╯╰┳╯╰┳━━┳━╮
╰━━╮┃╭╮╋╋╮╭┻╮╭┫┃━┫╭╯
┃╰━╯┃┃┃┃┃┃┃╱┃┃┃┃━┫┃
╰━━━┻╯╰┻╯╰╯╱╰╯╰━━┻╯
Overview
A vast majority of modern data analysis & modelling techniques rely upon the idea of hidden patterns, wether it is some type of visualisation tool or some form of a complex machine learning algorithm, the one thing that they have in common is the belief, that patterns tell us what’s hidden behind plain numbers. The same philosophy has been adopted by many traders & investors worldwide, there’s an entire school of thought that operates purely based on chart patterns. This is where Sniffer comes in, it is a tool designed to simplify & quantify the job of pattern recognition on any given price chart, by combining various factors & techniques that generate high-quality results.
This tool analyses bars selected by the user, and highlights bar clusters on the chart that exhibit similar behaviour across multiple dimensions. It can detect a single candle pattern like hammers or dojis, or it can handle multiple candles like morning/evening stars or double tops/bottoms, and many more. In fact, the tool is completely independent of such specific candle formations, instead, it works on the idea of vector similarity and generates a degree of similarity for every single combination of candles. Only the top-n matches are highlighted, users get to choose which patterns they want to analyse and to what degree, by customising the feature-space.
Background
In the world of trading, a common use-case is to scan a price chart for some specific candlestick formations & price structures, and then the chart is further analysed in reference to these events. Traders are often trying to answer questions like, when was the last time price showed similar behaviour, what are the instances similar to what price is doing right now, what happens when price forms a pattern like this, what were some of other indicators doing when this happened last(RSI, CCI, ADX etc), and many other abstract ideas to have a stronger confluence or to confirm a bias.Having such a context can be vital in making better informed decisions, but doing this manually on a chart that has thousands of candles can have many disadvantages. It’s tedious, human errors are rather likely, and even if it’s done with pin-point accuracy, chances are that we’ll miss out on many pieces of information. This is the thought that gave birth to Sniffer .
Sniffer tries to provide a general solution for pattern-based analysis by deploying vector-similarity computation techniques, that cover the full-breadth of a price chart and generate a list of top-n matches based on the criteria selected by the user. Most of these techniques come from the data science space, where vector similarity is often implemented to solve classification & clustering problems. Sniffer uses same principles of vector comparison, and computes a degree of similarity for every single candle formation within the selected range, and as a result generates a similarity matrix that captures how similar or dissimilar a set of candles is to the input set selected by the user.
How It Works
A brief overview of how the tool is implemented:
- Every bar is processed, and a set of features are mapped to it.
- Bars selected by the user are captured, and saved for later use.
- Once the all the bars have been processed, candles are back-tracked and degree of similarity is computed for every single bar(max-limit is 5000 bars).
- Degree of similarity is computed by comparing attributes like price range, candle breadth & volume etc.
- Similarity matrix is sorted and top-n results are highlighted on the chart through boxes of different colors.
A brief overview of the features space for bars:
- Range: Difference between high & low
- Body: Difference between close & open
- Volume: Traded volume for that candle
- Head: Upper wick for green candles & lower wick for red candles
- Tail: Lower wick for green candles & upper wick for red candles
- BTR: Body to Range ratio
- HTR: Head to Range ratio
- TTR: Tail to Range ratio
- HTB: Head to Body ratio
- TTB: Tail to Body ratio
- ROC: Rate of change for HL2 for four different periods
- RSI: Relative Strength Index
- CCI: Commodity Channel Index
- Stochastic: Stochastic Index
- ADX: DMI+, DMI- & ADX
A brief overview of how degree of similarity is calculated:
- Each bar set is compared to the inout bar set within the selected feature space
- Features are represented as vectors, and distance between the vectors is calculated
- Shorter the distance, greater the similarity
- Different distance calculation methods are available to choose from, such as Cosine, Euclidean, Lorentzian, Manhattan, & Pearson
- Each method is likely to generate slightly different results, users are expected to select the method & the feature space that best fits their use-case
How To Use It
- Usage of this tool is relatively straightforward, users can add this indicator to their chart and similar clusters will be highlighted automatically
- Users need to select a time range that will be treated as input, and bars within that range become the input formation for similarity calculations
- Boxes will be draw around the clusters that fit the matching criteria
- Boxes are color-coded, green color boxes represent the top one-third of the top-n matches, yellow boxes represent the middle third, red boxes are for bottom third, and white box represents user-input
- Boxes colors will be adjusted as you adjust input parameters, such as number of matches or look-back period
User Settings
Users can configure the following options:
- Select the time-range to set input bars
- Select the look-back period, number of candles to backtrack for similarity search
- Select the number of top-n matches to show on the chart
- Select the method for similarity calculation
- Adjust the feature space, this enables addition of custom features, such as pattern recognition, technical indicators, rate of change etc
- Toggle verbosity, shows degree of similarity as a percentage value inside the box
Top Features
- Pattern Agnostic: Designed to work with variable number of candles & complex patterns
- Customisable Feature Space: Users get to add custom features to each bar
- Comprehensive Comparison: Generates a degree of similarity for all possible combinations
Final Note
- Similarity matches will be shown only within last 4500 bars.
- In theory, it is possible to compute similarity for any size candle formations, indicator has been tested with formations of 50+ candles, but it is recommended to select smaller range for faster & cleaner results.
- As you move to smaller time frames, selected time range will provide a larger number of candles as input, which can produce undesired results, it is advised to adjust your selection when you change time frames. Seeking suggestions on how to directly receive bars as user input, instead of time range.
- At times, users may see array index out of bound error when setting up this indicator, this generally happens when the input range is not properly configured. So, it should disappear after you select the input range, still trying to figure out where it is coming from, suggestions are welcome.
Credits
- @HeWhoMustNotBeNamed for publishing such a handy PineScript Logger, it certainly made the job a lot easier.
Bart Pattern [LuxAlgo]As a sequel to our 'meme indicator' series... The Bart Pattern Detector identifies confirmed regular and inverted Bart patterns using edge detection.
Settings
Median Lookback: Lookback period of the median filter used for the edge detection, with a shorter period allowing to detect shorter-term and less spaced patterns.
Edge Detection Sensitivity: Sensitivity of the edge detection method, with higher values making the method less sensible to edges of low magnitude.
Range To Edges Threshold: Threshold for the range to edges ratio, with lower values detecting Bart patterns with flatter ranges between the edges.
Show Inverted Barts: Show inverted Bart patterns.
Mode: Determines how detected Bart patterns are displayed.
Usage
This indicator can be used to study past Bart patterns and how the market responded to them. Their detection is not done in real-time. Additionally detected edges are used to indicate the current market sentiment.
If you don't want a meme on your chart, you can also use the simple mode - but don't worry, we won't judge you if you don't...
Details
The origins of Bart patterns can be hard to pinpoint but most likely originate from social media around 2018. This pattern has been mostly covered in the cryptocurrency market similarly to how the McDonald's Pattern became a popular meme within the community. See our McDonald's Pattern Indicator that was created by us as our first 'meme indicator' in the series
The Bart pattern as its name suggests occurs when price forms a structure resembling the head of the Simpson character "Bart Simpson". This is characterized by a rectangular structure, which is a sideways market delimited by sharp volatile edges.
The Bart pattern is sometimes traded before completion, waiting for a breakout of a support/resistance located within the sideway part of the pattern.
The cause of this pattern is still discussed by traders, with some attributing it to over-leveraged market participants and while others attributing it to exchanges themselves through spoofing.
Notes
Barts patterns are very volatile structures, characterized by sudden price jumps, be careful when trading them.
Shout to the famous alien @lilmayo and our good pal @scheplick for the suggestion to create this work of art.
And don't forget to eat your shorts.
Pine Script® indicator
Smart Wedge Pattern [The_lurker]🔺 Smart Wedge Pattern نموذج الوتد الذكي
Advanced & Intelligent Wedge Detection Engine
This is not a traditional indicator that simply draws wedge lines — it is a comprehensive intelligent engine (system) for detecting and analyzing wedge patterns (Rising & Falling Wedge) based on price geometry, market context, and statistical quality of the pattern.
This indicator was designed to address the biggest problems in common wedge indicators:
❌ Too many false patterns
❌ Ignoring prior trend
❌ No real quality assessment for patterns
A comprehensive intelligent system that combines:
Adaptive algorithm that self-calibrates automatically according to market conditions
7 strict validation layers that filter out weak patterns and keep only the highest quality
Quality scoring system that evaluates each pattern from 0 to 100
3D visualization that makes patterns visually clear in an exceptional way
Smart targets based on Fibonacci ratios with real-time achievement tracking
The Result:
➡️ Fewer patterns
➡️ Cleaner, more accurate and reliable signals
➡️ Higher quality
➡️ Real practical use
═════════════════════════════════════════════════════════════
🎯 What Are Wedge Patterns?
1- Falling Wedge — Bullish Reversal Pattern
The falling wedge forms when price moves in a converging downward channel — meaning both the upper resistance line and the lower support line are declining, but the support line declines at a less steep angle, gradually narrowing the channel.
Why does the bullish breakout occur?
Declining highs show continuous selling pressure
But rising lows (P2 < P4) reveal that buyers are entering at higher levels
Convergence indicates decreasing bearish momentum
At a certain point, buying pressure overcomes and the breakout occurs
2- Rising Wedge — Bearish Reversal Pattern
The rising wedge is the exact opposite of the falling wedge — a converging upward channel where both lines rise, but the resistance line rises at a less steep angle.
Why does the bearish breakout occur?
Rising lows show continuous buying pressure
But declining highs (P2 > P4) reveal that sellers are entering at lower levels
Convergence indicates decreasing bullish momentum
At a certain point, selling pressure overcomes and the breakout occurs
═════════════════════════════════════════════════════════════
🧠 Adaptive Pivot System — The Heart of the Smart Indicator
The Problem with Traditional Indicators
Traditional indicators use a fixed value for pivot detection (like 5 bars left and 5 bars right). This means:
In quiet markets → Many delayed signals
In volatile markets → Few missed signals
No adaptation to the nature of each market or timeframe
The Solution: Smart Adaptation Algorithm
The indicator calculates optimal pivot sensitivity on each bar using 5 weighted factors:
Final Score = (Volatility_Score × 0.30) + (Trend_Score × 0.25) +
(Stability_Score × 0.20) + (Percentile_Context × 0.15) +
(Range_Score × 0.10)
Factor Weight How It's Calculated Why It's Important
Volatility Score 30% ATR(10) / ATR(50) Detects sudden changes in volatility
Trend Score 25% ADX(14) / 50 Trending markets need different sensitivity
Stability Score 20% StdDev(ATR) / Mean(ATR) Measures volatility consistency
Percentile Context 15% ATR / Percentile(ATR, 50) Places volatility in historical context
Range Score 10% Current_Range / Average_Range Detects unusual bars
The Result: The indicator uses low sensitivity (fewer, more important pivots) in quiet markets, and high sensitivity (more pivots, faster response) in volatile markets (more accurate pivots = correct geometric patterns).
═════════════════════════════════════════════════════════════
✅ Seven Validation Layers — Why This Indicator Is Different
Every detected pattern passes through 7 strict tests before being displayed:
1- Geometric Structure Validation
Validates:
P1 precedes P2 precedes P3 precedes P4 chronologically
Distance between each two points ≥ minimum threshold
Pattern width (P1→P4) within allowed range
Highs and lows order is correct for the wedge type
2- True Convergence Check
A true wedge must show convergence:
├── Gap at P4 < Gap at P1
├── Convergence ratio = End_Gap / Start_Gap
└── Ratio must be < defined convergence threshold (default 75%)
3- Slope Validation
For Falling Wedge:
├── Resistance line slope < 0 (declining)
├── Support line slope < 0 (declining)
└── Resistance slope < Support slope (convergence)
For Rising Wedge:
├── Resistance line slope > 0 (rising)
├── Support line slope > 0 (rising)
└── Support slope > Resistance slope (convergence)
4- Prior Trend Filter
Reversal patterns need a prior trend to reverse from:
├── Measures price movement during a defined period before P1
├── Normalizes movement using ATR for fair comparison
├── Falling wedge requires prior downtrend
└── Rising wedge requires prior uptrend
5- Channel Respect
Normal mode (close check):
└── Every close between P1 and P4 must be within wedge boundaries
Strict mode (high/low check):
├── Every high must be below resistance line (+ tolerance)
└── Every low must be above support line (- tolerance)
6- Post-P4 Validation
After the fourth point forms:
├── For falling wedge: Price doesn't break support or drop below P4
└── For rising wedge: Price doesn't break resistance or rise above P4
7- Quality Scoring System
Quality = (Convergence_Score × 0.30) + (Slope_Score × 0.25) +
(Width_Score × 0.20) + (Trend_Score × 0.15) +
(Height_Score × 0.10)
├── Convergence Score: More convergence = higher quality
├── Slope Score: Consistency of upper and lower line slopes
├── Width Score: Patterns with 40-100 bar width are ideal
├── Trend Score: Prior trend strength
└── Height Score: Pattern height relative to ATR
═════════════════════════════════════════════════════════════
✅ Pattern Lifecycle Management
The indicator doesn't just draw and disappear — it follows the complete pattern:
Pattern detection
Post-fourth point monitoring
Breakout confirmation
Target calculation
Target achievement tracking
Success or cancellation marking
❌ Pattern is automatically cancelled if:
Breakout fails
Channel is broken in reverse direction
Waiting period exceeded
═════════════════════════════════════════════════════════════
✅ Smart Targets + Success Level
After breakout:
Target is calculated based on pattern height
3 target modes:
Conservative (0.618)
Balanced (1.0)
Aggressive (1.618)
Independent Success level to measure move strength before target
═════════════════════════════════════════════════════════════
🎨 Advanced Visual Display (3D Visualization)
Three-dimensional pattern representation
Visual depth reflecting pattern size
3D target zone
Dynamic colors upon target achievement
🎨 The purpose of 3D is not decoration
But reading the pattern visually with speed and clarity
═════════════════════════════════════════════════════════════
⚙️ Key Features
✅ Automatic wedge detection
✅ Smart filtering reduces false signals
✅ Real quality assessment for each pattern
✅ Realistic and customizable targets
✅ Full support for Rising & Falling Wedge
✅ Works on all markets and timeframes
✅ Professional design and high performance
═════════════════════════════════════════════════════════════
📊 Usage Scenarios
🟢 Scalping
Timeframes: 1–15 minutes
Quality ≥ 60
Conservative targets
🔵 Day Trading
Timeframes: 15m–1h
Quality ≥ 50
Balanced targets
🟣 Swing Trading
Timeframes: 4h–Daily
Quality ≥ 40
Strict channel
Aggressive targets
🟠 Cryptocurrencies
Strict convergence
Strict channel
Quality ≥ 65
═════════════════════════════════════════════════════════════
🔔 Alerts
Falling wedge breakout ⇒ Buy
Rising wedge breakout ⇒ Sell
Any wedge breakout
═════════════════════════════════════════════════════════════
⚠️ Disclaimer
This indicator is for educational and analytical purposes only. It does not represent financial, investment, or trading advice. Use it in conjunction with your own strategy and risk management. Neither TradingView nor the developer is responsible for any financial decisions or losses.
═════════════════════════════════════════════════════════════
🔺 Smart Wedge Pattern نموذج الوتد الذكي
Advanced & Intelligent Wedge Detection Engine
ليس مؤشرًا تقليديًا يرسم خطوط وتد فقط ، بل هو محرك (نظام) ذكي متكامل لاكتشاف وتحليل نماذج الوتد (Rising & Falling Wedge) اعتمادًا على الهندسة السعرية ، السياق السوقي ، والجودة الإحصائية للنموذج.
تم تصميم هذا المؤشر لمعالجة أكبر مشكلة في مؤشرات الوتد الشائعة:
❌ كثرة النماذج الوهمية
❌ تجاهل الاتجاه السابق
❌ عدم وجود تقييم حقيقي لجودة النموذج
نظام ذكي متكامل يجمع بين:
خوارزمية تكيفية تُعاير نفسها تلقائياً حسب ظروف السوق
7 طبقات تحقق صارمة تُصفّي الأنماط الضعيفة وتُبقي فقط الأعلى جودة
نظام تسجيل جودة يُقيّم كل نموذج من 0 إلى 100
تصور ثلاثي الأبعاد يجعل الأنماط واضحة بصرياً بشكل استثنائي
أهداف ذكية مبنية على نسب فيبوناتشي مع تتبع التحقق الآني
النتيجة:
➡️ نماذج أقل
➡️ إشارات أنظف أكثر دقة وموثوقية
➡️ جودة أعلى
➡️ استخدام عملي حقيقي
═════════════════════════════════════════════════════════════
🎯 ما هي نماذج الأوتاد؟
1- الوتد الهابط (Falling Wedge) — نموذج انعكاسي صعودي
الوتد الهابط يتشكل عندما يتحرك السعر في قناة هابطة متقاربة — أي أن خط المقاومة العلوي وخط الدعم السفلي كلاهما يهبطان، لكن خط الدعم يهبط بزاوية أقل حدة، مما يُضيّق القناة تدريجياً.
لماذا يحدث الكسر الصعودي؟
القمم الهابطة تُظهر ضغطاً بيعياً مستمراً
لكن القيعان الصاعدة (P2 < P4) تكشف أن المشترين يدخلون عند مستويات أعلى
التقارب يُشير إلى تناقص الزخم الهبوطي
عند نقطة معينة، يتغلب ضغط الشراء ويحدث الكسر
2- الوتد الصاعد (Rising Wedge) — نموذج انعكاسي هبوطي
الوتد الصاعد هو عكس الهابط تماماً — قناة صاعدة متقاربة حيث يصعد كلا الخطين، لكن خط المقاومة يصعد بزاوية أقل حدة.
لماذا يحدث الكسر الهبوطي؟
القيعان الصاعدة تُظهر ضغطاً شرائياً مستمراً
لكن القمم الهابطة (P2 > P4) تكشف أن البائعين يدخلون عند مستويات أدنى
التقارب يُشير إلى تناقص الزخم الصعودي
عند نقطة معينة، يتغلب ضغط البيع ويحدث الكسر
═════════════════════════════════════════════════════════════
🧠 نظام المحاور التكيفي — قلب المؤشر الذكي
المشكلة مع المؤشرات التقليدية
المؤشرات التقليدية تستخدم قيمة ثابتة لاكتشاف المحاور (مثل 5 شموع يسار و5 شموع يمين). هذا يعني:
في الأسواق الهادئة → إشارات كثيرة ومتأخرة
في الأسواق المتقلبة → إشارات قليلة وضائعة
لا تكيف مع طبيعة كل سوق أو إطار زمني
الحل: خوارزمية التكيف الذكي
المؤشر يحسب حساسية المحور المثلى في كل شمعة باستخدام 5 عوامل مرجحة:
النتيجة النهائية = (درجة_التقلب × 0.30) + (درجة_الاتجاه × 0.25) +
(درجة_الاستقرار × 0.20) + (السياق_المئوي × 0.15) +
(درجة_النطاق × 0.10)
العامل الوزن كيف يُحسب لماذا مهم
درجة التقلب 30% ATR(10) / ATR(50) يكشف التغير المفاجئ في التقلب
درجة الاتجاه 25% ADX(14) / 50 الأسواق الاتجاهية تحتاج حساسية مختلفة
درجة الاستقرار 20% StdDev(ATR) / Mean(ATR) يقيس ثبات التقلب
السياق المئوي 15% ATR / Percentile(ATR, 50) يضع التقلب في سياقه التاريخي
درجة النطاق 10% النطاق_الحالي / متوسط_النطاق يكشف الشموع غير العادية
النتيجة: المؤشر يستخدم حساسية منخفضة (محاور أقل، أكثر أهمية) في الأسواق الهادئة، وحساسية عالية (محاور أكثر، استجابة أسرع) في الأسواق المتقلبة (محاور أدق = نماذج هندسية صحيحة).
═════════════════════════════════════════════════════════════
✅ طبقات التحقق السبع — لماذا هذا المؤشر مختلف
كل نموذج مُكتشف يمر عبر 7 اختبارات صارمة قبل عرضه:
1- التحقق من البنية الهندسية
يتحقق من:
P1 يسبق P2 يسبق P3 يسبق P4 زمنياً
المسافة بين كل نقطتين ≥ الحد الأدنى المحدد
عرض النموذج (P1→P4) ضمن النطاق المسموح
ترتيب القمم والقيعان صحيح حسب نوع الوتد
2- فحص التقارب الحقيقي
الوتد الحقيقي يجب أن يُظهر تقارباً:
├── الفجوة عند P4 < الفجوة عند P1
├── نسبة التقارب = الفجوة_النهائية / الفجوة_الابتدائية
└── النسبة يجب أن تكون < عتبة التقارب المحددة (افتراضي 75%)
3- التحقق من الميل
للوتد الهابط:
├── ميل خط المقاومة < 0 (هابط)
├── ميل خط الدعم < 0 (هابط)
└── ميل المقاومة < ميل الدعم (تقارب)
للوتد الصاعد:
├── ميل خط المقاومة > 0 (صاعد)
├── ميل خط الدعم > 0 (صاعد)
└── ميل الدعم > ميل المقاومة (تقارب)
4- فلتر الاتجاه السابق
النماذج الانعكاسية تحتاج اتجاهاً سابقاً لتنعكس منه:
├── يقيس حركة السعر خلال فترة محددة قبل P1
├── يُطبّع الحركة باستخدام ATR لمقارنة عادلة
├── الوتد الهابط يحتاج اتجاهاً هابطاً سابقاً
└── الوتد الصاعد يحتاج اتجاهاً صاعداً سابقاً
5- احترام القناة
وضع عادي (فحص الإغلاق):
└── كل إغلاق بين P1 و P4 يجب أن يكون داخل حدود الوتد
وضع صارم (فحص القمة/القاع):
├── كل قمة يجب أن تكون تحت خط المقاومة (+ نسبة تسامح)
└── كل قاع يجب أن يكون فوق خط الدعم (- نسبة تسامح)
6- التحقق بعد P4
بعد تشكل النقطة الرابعة:
├── للوتد الهابط: السعر لا يكسر خط الدعم أو ينزل تحت P4
└── للوتد الصاعد: السعر لا يكسر خط المقاومة أو يصعد فوق P4
7- نظام تسجيل الجودة
الجودة = (درجة_التقارب × 0.30) + (درجة_الميل × 0.25) +
(درجة_العرض × 0.20) + (درجة_الاتجاه × 0.15) +
(درجة_الارتفاع × 0.10)
├── درجة التقارب: كلما زاد التقارب، زادت الجودة
├── درجة الميل: تناسق ميل الخطين العلوي والسفلي
├── درجة العرض: الأنماط بعرض 40-100 شمعة مثالية
├── درجة الاتجاه: قوة الاتجاه السابق
└── درجة الارتفاع: ارتفاع النموذج نسبة لـ ATR
═════════════════════════════════════════════════════════════
✅ إدارة دورة حياة النموذج (Pattern Lifecycle)
المؤشر لا يرسم ثم يختفي، بل يتابع النموذج كاملًا:
اكتشاف النموذج
مراقبة ما بعد النقطة الرابعة
تأكيد الاختراق
حساب الهدف
تتبع الوصول للهدف
تمييز النجاح أو الإلغاء
❌ يتم إلغاء النموذج تلقائيًا إذا:
فشل في الاختراق
كُسرت القناة عكسيًا
تجاوز مدة الانتظار المحددة
═════════════════════════════════════════════════════════════
✅ أهداف ذكية + Success Level
بعد الاختراق:
يتم حساب الهدف بناءً على ارتفاع النموذج
3 أوضاع للأهداف:
Conservative (0.618)
Balanced (1.0)
Aggressive (1.618)
مستوى Success مستقل لقياس قوة الحركة قبل الهدف
═════════════════════════════════════════════════════════════
🎨 عرض بصري متقدم (3D Visualization)
تمثيل ثلاثي الأبعاد للنموذج
عمق بصري يعكس حجم النموذج
منطقة هدف ثلاثية الأبعاد
ألوان ديناميكية عند تحقق الهدف
🎨 الهدف من 3D ليس الزينة
بل قراءة النموذج بصريًا بسرعة ووضوح
═════════════════════════════════════════════════════════════
⚙️ أهم المميزات
✅ اكتشاف تلقائي للأوتاد
✅ فلترة ذكية تقلل الإشارات الوهمية
✅ تقييم جودة حقيقي لكل نموذج
✅ أهداف واقعية وقابلة للتخصيص
✅ دعم كامل لـ Rising & Falling Wedge
✅ يعمل على جميع الأسواق والفريمات
✅ تصميم احترافي وأداء عالي
═════════════════════════════════════════════════════════════
📊 سيناريوهات الاستخدام
🟢 المضاربة السريعة
أطر: 1–15 دقيقة
جودة ≥ 60
أهداف محافظة
🔵 التداول اليومي
أطر: 15د–1س
جودة ≥ 50
أهداف متوازنة
🟣 التداول المتأرجح
أطر: 4س–يومي
جودة ≥ 40
قناة صارمة
أهداف عدوانية
🟠 العملات الرقمية
تقارب صارم
قناة صارمة
جودة ≥ 65
═════════════════════════════════════════════════════════════
🔔 التنبيهات
كسر وتد هابط ⇒ شراء
كسر وتد صاعد ⇒ بيع
أي كسر وتد
═════════════════════════════════════════════════════════════
⚠️ إخلاء المسؤولية
هذا المؤشر لأغراض تعليمية وتحليلية فقط. لا يُمثل نصيحة مالية أو استثمارية أو تداولية. استخدمه بالتزامن مع استراتيجيتك الخاصة وإدارة المخاطر. لا يتحمل TradingView ولا المطور مسؤولية أي قرارات مالية أو خسائر.
Pine Script® indicator
Quasimodo Pattern Strategy Back Test [TradingFinder] QM Trading🔵 Introduction
The QM pattern, also known as the Quasimodo pattern, is one of the popular patterns in price action, and it is often used by technical analysts. The QM pattern is used to identify trend reversals and provides a very good risk-to-reward ratio. One of the advantages of the QM pattern is its high frequency and visibility in charts.
Additionally, due to its strength, it is highly profitable, and as mentioned, its risk-to-reward ratio is very good. The QM pattern is highly popular among traders in supply and demand, and traders also use this pattern.
The Price Action QM pattern, like other Price Action patterns, has two types: Bullish QM and Bearish QM patterns. To identify this pattern, you need to be familiar with its types to recognize it.
🔵 Identifying the QM Pattern
🟣 Bullish QM
In the bullish QM pattern, as you can see in the image below, an LL and HH are formed. As you can see, the neckline is marked as a dashed line. When the price reaches this range, it will start its upward movement.
🟣 Bearish QM
The Price Action QM pattern also has a bearish pattern. As you can see in the image below, initially, an HH and LL are formed. The neckline in this image is the dashed line, and when the LL is formed, the price reaches this neckline. However, it cannot pass it, and the downward trend resumes.
🔵 How to Use
The Quasimodo pattern is one of the clearest structures used to identify market reversals. It is built around the concept of a structural break followed by a pullback into an area of trapped liquidity. Instead of relying on lagging indicators, this pattern focuses purely on price action and how the market reacts after exhausting one side of liquidity. When understood correctly, it provides traders with precise entry points at the transition between trend phases.
🟣 Bullish Quasimodo
A bullish Quasimodo forms after a clear downtrend when sellers start losing control. The market continues to make lower lows until a sudden higher high appears, signaling that buyers are entering with strength. Price then pulls back to retest the previous low, creating what is known as the Quasimodo low.
This area often becomes the final trap for sellers before the market shifts upward. A visible rejection or displacement from this zone confirms bullish momentum. Traders usually place entries near this level, stops below the low, and targets at previous highs or the next resistance zone. Combining the setup with demand zones or Fair Value Gaps increases its accuracy.
🟣 Bearish Quasimodo
A bearish Quasimodo forms near the top of an uptrend when buyers begin to lose strength. The market continues to make higher highs until a sudden lower low breaks the bullish structure, showing that selling pressure is entering the market. Price then retraces upward to retest the previous high, forming the Quasimodo high, where breakout buyers are often trapped.
Once rejection appears at this level, it indicates a likely reversal. Traders can enter short near this area, with stop-losses placed above the high and targets near the next support or previous lows. The setup gains more reliability when aligned with supply zones, SMT divergence, or bearish Fair Value Gaps.
🔵 Setting
Pivot Period : You can use this parameter to use your desired period to identify the QM pattern. By default, this parameter is set to the number 5.
Take Profit Mode : You can choose your desired Take Profit in three ways. Based on the logic of the QM strategy, you can select two Take Profit levels, TP1 and TP2. You can also choose your take profit based on the Reward to Risk ratio. You must enter your desired R/R in the Reward to Risk Ratio parameter.
Stop Loss Refine : The loss limit of the QM strategy is based on its logic on the Head pattern. You can refine it using the ATR Refine option to prevent Stop Hunt. You can enter your desired coefficient in the Stop Loss ATR Adjustment Coefficient parameter.
Reward to Risk Ratio : If you set Take Profit Mode to R/R, you must enter your desired R/R here. For example, if your loss limit is 10 pips and you set R/R to 2, your take profit will be reached when the price is 20 pips away from your entry point.
Stop Loss ATR Adjustment Coefficient : If you set Stop Loss Refine to ATR Refine, you must adjust your loss limit coefficient here. For example, if your buy position's loss limit is at the price of 1000, and your ATR is 10, if you set Stop Loss ATR Adjustment Coefficient to 2, your loss limit will be at the price of 980.
Entry Level Validity : Determines how long the Entry level remains valid. The higher the level, the longer the entry level will remain valid. By default it is 2 and it can be set between 2 and 15.
🔵 Results
The following examples show the backtest results of the Quasimodo (QM) strategy in action. Each image is based on specific settings for the symbol, timeframe, and input parameters, illustrating how the QM logic can generate signals under different market conditions. The detailed configuration for each backtest is also displayed on the image.
⚠ Important Note : Even with identical settings and the same symbol, results may vary slightly across different brokers due to data feed variations and pricing differences.
Default Properties of Backtests :
OANDA:XAUUSD | TimeFrame: 5min | Duration: 1 Year :
BINANCE:BTCUSD | TimeFrame: 5min | Duration: 1 Year :
CAPITALCOM:US30 | TimeFrame: 5min | Duration: 1 Year :
NASDAQ:QQQ | TimeFrame: 5min | Duration: 5 Year :
OANDA:EURUSD | TimeFrame: 5min | Duration: 5 Year :
PEPPERSTONE:US500 | TimeFrame: 5min | Duration: 5 Year :
Pine Script® strategy
Pipsttocra Technical Patterns: EV HV FVG & OBPipstocrat Technical Patterns , identifies and visualizes key technical analysis patterns and structures on a TradingView chart. Here's a simple breakdown of what it does:
Fair Value Gaps (FVG):
Detects and highlights bullish and bearish Fair Value Gaps as colored boxes.
Adds centerline markers to indicate potential price levels.
Order Blocks (OB):
Identifies bullish and bearish order blocks (areas of significant buying or selling).
Displays them as colored rectangles extending to the right of the chart.
Candlestick Patterns:
Detects Engulfing Patterns (bullish and bearish) with volume confirmation.
Highlights Hammer and Inverted Hammer patterns with customizable shapes and colors.
Customization Options:
Allows users to adjust colors, sizes, and styles for all patterns and structures.
Provides options to show/hide specific patterns like FVGs, engulfing candles, hammers, etc.
Alerts:
Generates alerts for detected patterns, such as FVGs, order blocks, engulfing candles, and confluence zones (combination of FVGs and order blocks).
Management Features:
Automatically removes older or "filled" patterns (optional).
Tracks and updates patterns dynamically as new bars form.
Purpose:
This tool helps traders spot high-probability trading opportunities by identifying key market structures (like FVGs and order blocks) and candlestick patterns. It combines multiple technical analysis concepts into one comprehensive indicator for better decision-making.
Pine Script® indicator
Three Bar Reversal Pattern [ActiveQuants]This indicator identifies bullish and bearish three-bar reversal patterns , offering traders a visual tool to spot potential trend reversals. By analyzing consecutive candlesticks, volume trends, and candlestick morphology, it highlights signals while filtering out false patterns. Ideal for traders using price action strategies, it simplifies pattern recognition and enhances decision-making with customizable parameters.
█ KEY FEATURES
Pattern Detection Logic :
Bullish Reversals : Detects two consecutive bearish candles followed by a bullish candle that closes above the open of the first bearish candle .
Bearish Reversals : Identifies two consecutive bullish candles followed by a bearish candle that closes below the open of the first bullish candle .
Volume Confirmation :
Filters signals using a Volume SMA (user-defined length) to ensure reversals occur with above-average volume, adding validity to the pattern.
Candlestick Filtering :
Shooting Star Filter : Discards bullish patterns if the third candle is a Shooting Star (body confined to the lower portion of the candle’s range, adjustable via Shooting Star Body Limit ).
Hammer Filter : Discards bearish patterns if the third candle is a Hammer (body confined to the upper portion of the candle’s range, adjustable via Hammer Body Limit ).
Customizable Display :
Toggle visibility of bullish/bearish patterns and customize their colors.
Adjust the Show Last parameter to limit plotted labels to recent bars.
Alerts Integration :
Separate Bullish/Bearish Alerts : Generate independent alerts for bullish and bearish patterns. Traders can selectively enable one or both alerts via TradingView’s alert system.
Real-time notifications ensure you never miss a potential reversal signal.
█ CONCLUSION
The Three Bar Reversal Pattern Indicator streamlines the identification of reversal setups by combining candlestick patterns, volume analysis, and customizable filters. Its focus on price action dynamics makes it invaluable for traders seeking to capitalize on trend exhaustion or market sentiment shifts.
█ IMPORTANT NOTES
⚠ Use with Confluence : Reversal signals should be validated with additional tools like support/resistance levels, trendlines, or momentum oscillators.
⚠ Adapt Parameters : Adjust Volume SMA Length , Show Last , and body limits ( Shooting Star Body Limit and Hammer Body Limit ) to suit your timeframe and asset volatility.
█ RISK DISCLAIMER
Trading involves significant risk, and you may lose capital. Past performance is not indicative of future results. This tool provides informational signals only and does not constitute financial advice. Use it at your own risk and consult a qualified financial professional before making trading decisions.
Incorporate this indicator into your strategy to refine reversal entries, manage risk, and align with market momentum.
📈 Happy trading! 🚀
Pine Script® indicator
Double Top, Double Bottom & Head and Shoulders Patterns [ST]Double Top, Double Bottom & Head and Shoulders Patterns
Description in English:
This indicator identifies double top, double bottom, head and shoulders, and inverse head and shoulders patterns on a 4-hour timeframe. It marks the pivot points with circles and outlines the structures with lines, providing clear visual signals of these important reversal patterns.
The colors are customizable for each pattern type.
Detailed Explanation:
Configuration:
Pivot Length: This input defines the period over which pivot points are calculated. The default value is 10.
Circle Color: This input sets the color of the circles that mark the identified double top and double bottom patterns. The default color is blue.
Line Color: This input sets the color of the lines that circle the identified structures of double top and double bottom patterns. The default color is red.
Head and Shoulders Color: This input sets the color of the circles and lines that mark the head and shoulders patterns. The default color is orange.
Inverse Head and Shoulders Color: This input sets the color of the circles and lines that mark the inverse head and shoulders patterns. The default color is purple.
Pattern Identification:
Pivot High and Low: The script uses the pivothigh and pivotlow functions to identify local maxima and minima, essential for detecting the patterns.
Double Top: Identified when there are two pivot highs within the pivot length, and the second high is equal to the first. This pattern typically indicates a potential reversal from an uptrend to a downtrend.
Double Bottom: Identified when there are two pivot lows within the pivot length, and the second low is equal to the first. This pattern typically indicates a potential reversal from a downtrend to an uptrend.
Head and Shoulders: Identified when there is a higher pivot high (head) between two lower pivot highs (shoulders), indicating a potential reversal from an uptrend to a downtrend.
Inverse Head and Shoulders: Identified when there is a lower pivot low (head) between two higher pivot lows (shoulders), indicating a potential reversal from a downtrend to an uptrend.
Drawing Circles and Lines:
Double Top: Marked with blue circles and red lines.
Double Bottom: Marked with blue circles and red lines.
Head and Shoulders: Marked with orange circles and lines.
Inverse Head and Shoulders: Marked with purple circles and lines.
Indicator Benefits:
Pattern Identification: Helps traders identify key reversal patterns (double top, double bottom, head and shoulders, and inverse head and shoulders) on the 4-hour timeframe.
Visual Cues: Provides clear visual signals for these patterns, aiding in making informed trading decisions.
Customizable Parameters: Allows traders to adjust the pivot length, circle color, line color, head and shoulders color, and inverse head and shoulders color to suit different trading strategies and market conditions.
Justification of Component Combination:
Combining pivot point identification with pattern recognition provides a robust method for detecting significant reversal patterns. The visual cues enhance the trader's ability to quickly spot these patterns on the chart.
How Components Work Together:
The script first identifies pivot points based on the specified pivot length.
It then checks for the presence of double top, double bottom, head and shoulders, and inverse head and shoulders patterns using these pivot points.
When a pattern is identified, it is marked with a circle on the chart, and lines are drawn around the structure to provide a clear visual indication of the pattern's presence.
Título: Padrões de Morro Duplo, Fundo Duplo e Ombro-Cabeça-Ombro
Descrição em Português:
Este indicador identifica padrões de morro duplo, fundo duplo, ombro-cabeça-ombro e ombro-cabeça-ombro invertido no gráfico de 4 horas.
Ele marca os pontos de pivô com círculos e contorna as estruturas com linhas, fornecendo sinais visuais claros desses importantes padrões de reversão. As cores são personalizáveis para cada tipo de padrão.
Explicação Detalhada:
Configuração:
Comprimento do Pivô: Este input define o período sobre o qual os pontos de pivô são calculados. O valor padrão é 10.
Cor do Círculo: Este input define a cor dos círculos que marcam os padrões identificados de morro duplo e fundo duplo. A cor padrão é azul.
Cor da Linha: Este input define a cor das linhas que contornam as estruturas identificadas de morro duplo e fundo duplo. A cor padrão é vermelha.
Cor de Ombro-Cabeça-Ombro: Este input define a cor dos círculos e linhas que marcam os padrões de ombro-cabeça-ombro. A cor padrão é laranja.
Cor de Ombro-Cabeça-Ombro Invertido: Este input define a cor dos círculos e linhas que marcam os padrões de ombro-cabeça-ombro invertido. A cor padrão é lilás.
Identificação de Padrões:
Pivô Alto e Baixo: O script usa as funções pivothigh e pivotlow para identificar máximas e mínimas locais, essenciais para detectar os padrões.
Morro Duplo: Identificado quando há duas máximas de pivô dentro do comprimento do pivô, e a segunda máxima é igual à primeira. Este padrão geralmente indica uma reversão potencial de uma tendência de alta para uma tendência de baixa.
Fundo Duplo: Identificado quando há duas mínimas de pivô dentro do comprimento do pivô, e a segunda mínima é igual à primeira. Este padrão geralmente indica uma reversão potencial de uma tendência de baixa para uma tendência de alta.
Ombro-Cabeça-Ombro: Identificado quando há uma máxima de pivô mais alta (cabeça) entre duas máximas de pivô mais baixas (ombros), indicando uma reversão potencial de uma tendência de alta para uma tendência de baixa.
Ombro-Cabeça-Ombro Invertido: Identificado quando há uma mínima de pivô mais baixa (cabeça) entre duas mínimas de pivô mais altas (ombros), indicando uma reversão potencial de uma tendência de baixa para uma tendência de alta.
Desenho de Círculos e Linhas:
Morro Duplo: Marcado com círculos azuis e linhas vermelhas.
Fundo Duplo: Marcado com círculos azuis e linhas vermelhas.
Ombro-Cabeça-Ombro: Marcado com círculos e linhas laranjas.
Ombro-Cabeça-Ombro Invertido: Marcado com círculos e linhas lilás.
Benefícios do Indicador:
Identificação de Padrões: Ajuda os traders a identificar padrões-chave de reversão (morro duplo, fundo duplo, ombro-cabeça-ombro e ombro-cabeça-ombro invertido) no gráfico de 4 horas.
Sinais Visuais: Fornece sinais visuais claros para esses padrões, auxiliando na tomada de decisões informadas.
Parâmetros Personalizáveis: Permite que os traders ajustem o comprimento do pivô, a cor do círculo, a cor da linha, a cor de ombro-cabeça-ombro e a cor de ombro-cabeça-ombro invertido para se adequar a diferentes estratégias de negociação e condições de mercado.
Justificação da Combinação de Componentes:
Combinar a identificação de pontos de pivô com o reconhecimento de padrões fornece um método robusto para detectar padrões de reversão significativos. Os sinais visuais melhoram a capacidade do trader de identificar rapidamente esses padrões no gráfico.
Como os Componentes Funcionam Juntos:
O script primeiro identifica os pontos de pivô com base no comprimento do pivô especificado.
Em seguida, verifica a presença de padrões de morro duplo, fundo duplo, ombro-cabeça-ombro e ombro-cabeça-ombro invertido usando esses pontos de pivô.
Quando um padrão é identificado, ele é marcado com um círculo no gráfico, e linhas são desenhadas ao redor da estrutura para fornecer uma indicação visual clara da presença do padrão.
Pine Script® indicator
Candlestick Patterns detection and backtester [TrendX_]INTRODUCTION:
The Candlestick Patterns detection and backtester is designed to empower traders by identifying and analyzing candlestick patterns. Leveraging the robust Pine Script's add-in “All Candlestick Patterns”, this indicator meticulously scans the market for candlestick formations, offering insights into potential market movements. With its backtesting capabilities, we evaluate historical data to present traders with performance metrics such as win rates, net profit, and profit factors for each pattern. This allows traders to make informed decisions based on empirical evidence. The customizable settings, including trend filters and exit conditions, provide a tailored experience, adapting to various trading styles and strategies.
CREDIT:
This indicator is powered by the Pinescript add-in, *All Candlestick Patterns*, which provides a comprehensive library of candlestick formations.
TABLE USAGE:
The indicator features a detailed usage table that presents backtested results of all candlestick patterns. This includes:
Win Rates: The percentage of trades that resulted in a profit.
Net Profit: The total profit after subtracting losses from gains.
Profit Factor: A measure of the indicator’s profitability (gross profit / gross loss).
Total Trades: The total number of trades taken for every candlestick pattern's appearance.
CHART CANDLESTICK USAGE:
The indicator integrates candlestick pattern detections directly into the chart, displaying:
Pattern Detections: Each detected pattern is marked on the chart.
Win Rates: The win rate of each pattern is shown in brackets next to the detection.
CHART SETTINGS:
Users can customize the indicator with a variety of trend filters and settings:
Trend Filters: Apply filters based on SMA50, SMA200, Supertrend, and RSI threshold to refine pattern detections.
Exit Condition: Set an exit condition based on the crossing of a simple moving average of customizable length.
Visibility: Choose to show or hide the candlestick patterns’ detections on the chart.
Pine Script® indicator
Engulfing [TradingFinder] Bullish & Bearish CandleStick Pattern🔵 Introduction
The candlestick engulfing pattern is important pattern in technical analysis that can be observed in candlestick charts. This pattern occurs when a complete candle engulfs or "engulfs" the body of a previous candle, meaning that the body of the new candle completely covers the body of the previous candle.
The candlestick engulfing pattern has two types: the bullish engulfing pattern and the bearish engulfing pattern.
• Bullish Engulfing Pattern: This pattern occurs when a market candle opens with a larger and higher body than the previous market candle and completely covers the body of the previous candle. This pattern may indicate the presence of strong buying pressure and a potential change in price direction upwards.
• Bearish Engulfing Pattern: This pattern occurs when a market candle opens with a larger and lower body than the previous market candle and completely covers the body of the previous candle. This pattern may indicate the presence of strong selling pressure and a potential change in price direction downwards.
The candlestick engulfing pattern is usually used as a valid signal for a change in price direction in the market and can enhance a combination of crossover investments and technical analysis. However, it should always be evaluated alongside other indicators and market factors, and counter decisions should be made accordingly.
🔵 Recognition Method
Correct, the candlestick engulfing pattern is one of the important patterns in technical analysis that is typically used as a strong signal for a valid change in price direction in the market. This pattern occurs when a candle (usually in the market) opens with a larger and higher (for bullish engulfing pattern) or lower (for bearish engulfing pattern) body than a previous market candle and completely covers the body of the previous candle.
Example of Bullish Engulfing Pattern:
• First Candle: A bearish (downward) candle with a small red body.
• Second Candle: A bullish (upward) candle with a larger body that completely covers the body of the previous candle.
This pattern may indicate a change in price direction from downward to upward.
Example of Bearish Engulfing Pattern:
• First Candle: A bullish (upward) candle with a small green body.
• Second Candle: A bearish (downward) candle with a larger body that completely covers the body of the previous candle.
This pattern may indicate a change in price direction from upward to downward.
The most important point is that the candlestick engulfing pattern should be carefully considered and always evaluated alongside other market indicators and overall conditions. For example, the engulfing pattern near important support or resistance levels, during significant market command changes, or accompanied by other technical signals can have greater signaling power.
🟣 "Bullish Engulfing" Candle
• The first candle is bullish and the second candle is bearish.
• At the end of a downtrend.
• The closing of the first candle is above the opening of the second candle.
• The high of the first candle is higher than the high of the second candle.
Optimal Condition:
• The closing of the first candle is higher than the high of the second candle.
• More than 80% of the first candle is bullish.
🟣 "Bearish Engulfing" Candle
• The first candle is bearish and the second candle is bullish.
• At the end of an uptrend.
• The closing of the first candle is below the opening of the second candle.
• The low of the first candle is lower than the low of the second candle.
Optimal Condition:
• The closing of the first candle is below the opening of the second candle.
• More than 80% of the first candle is bearish.
🔵 Settings
The "Engulf Filter" option allows the "Optimal Condition" to be executed and will show fewer candlesticks.
🔵 Status
Off: Default mode, showing more identifications.
• Green color indicates optimal "Bullish Engulfing" candles.
• Red color indicates optimal "Bearish Engulfing" candles.
On: By changing the default to "On," the number of identifications decreases and the optimal condition is applied.
• Blue color indicates "Bullish Engulfing" candles.
• Black color indicates "Bearish Engulfing" candles.
🟣 Important Note
"Engulfing" candles are very useful signals in the direction of the overall trend, but we do not expect a suitable movement from "Engulfing" candles against the trend.
Pine Script® indicator
Volatility patterns / Flowly Indicators- Overview
Volatility patterns detect various forms of indecisive price action, on a larger scale as a compressed range and on a smaller scale as indecision candles. Indecisive and volatility suppressing price action can be thought of as a spring being pressed down. The more suppression, the more tension is built and eventually released as a spike or series of spikes in volatility. Each volatility pattern is assigned an influence period, during which average and peak relative volatility is recorded and stored to volatility metrics.
- Patterns
The following scenarios are qualified as indecision candles: inside candles, indecision engulfing candles and volatility shifts.
By default, each indecision candle is considered a valid pattern only when another indecision candle has taken place within 3 periods, e.g. prior inside candle + indecision engulfing candle = valid volatility pattern. This measurement is taken to filter noise by looking for multiple hints of pending volatility, rather than just one. Level of tolerated noise can be changed via input menu by using sensitivity setting, by default set to 2.
Sensitivity at 1: Any single indecision candle is considered a valid pattern
Sensitivity at 2: 2 indecision candles within 3 bars is considered a valid pattern
Sensitivity at 3: 2 indecision candles within 2 bars (consecutive) is considered a valid pattern
The following scenarios are qualified as range patterns: series of lower highs/higher lows and series of low volatility pivots.
A pivot is defined by highest/lowest point in price, by default within 2 periods back and 2 periods forward. When 4 pivots with qualities mentioned above are found, a box indicating compressed range will appear. Both required pivots and pivot definition can be adjusted via input menu.
- Influence time and metrics
By default, influence time for each volatility pattern is set to 6 candles, a period for which spike(s) in volatility is expected. For each influence period, average relative volatility (volatility relative to volatility SMA 20) and peak relative volatility is recorded and stored to volatility metrics. All metrics used in calculations are visible in "Data Window "tab. Average and peak volatility during influence period will vary depending on chart, timeframe and chosen settings. Tweaking the settings might result in an improvement and is worth experimenting with.
- Visuals
By default, indecision candles are visualized as yellow lines and range patterns as orange boxes. Influence time periods are respectively visualized as colored candle borders, applied as long as influence time period is active. All colors are fully customizable via input menu.
- Practical guide
Volatility patterns depict moments of equal strength from both bulls and bears. While this equilibrium is in place, price is stagnant and compresses until either side initiates volatility, releasing the built up tension. On top of hedging and playing the volatility using volatility based instruments, some other methods can be applied to take advantage of the somewhat tricky areas of indecision.
Example #1: Trading volatility
Volatility is not a bad thing from a trading perspective, but can actually be fertile ground for executing trade setups. Trading volatility influence periods from higher timeframes on lower timeframes gives greater resolution to work with and opportunities to take advantage of the wild swings created.
Example #2: Finding bias for patterns
Points of confluence where it anyway makes sense to favor one side over the other can be used for establishing bias for indecisive price action as well. At face value, it makes sense to expect bearish reactions at range highs and bullish reactions at range low, for which volatility patterns can provide a catalyst.
Example #3: Betting on initiation direction
Betting on direction of the first volatile move can easily go against you, but if risk/reward is able to compensate for the poor win rate, it's a valid idea to consider and explore.
Pine Script® indicator
V Bottom & V Top Pattern [Misu]█ This indicator shows V bottom & V top patterns as well as potential V bottom & V top.
These V bottom & V top are chart powerful reversal patterns.
They appear in all markets and time-frames, but due to the nature of the aggressive moves that take place when a market reverses direction, it can be difficult to identify this pattern in real-time.
To address this problem, I added potential V pattern as well as the confirmed one.
█ Usages:
You can use V top & V bottoms for reversal zones.
You can use it for scalping strategies, as a main buy & sell signal.
Potential V patterns can be used to anticipate the market, in addition to volatility or momentum indicators, for example.
█ How it works?
This indicator uses pivot points to determine potential V patterns and confirm them.
Paramaters are available to filter breakouts of varying strengths.
Patterns also have a "max number bars" to be validated.
█ Why a Strategy type indicator?
Due to the many different parameters, this indicator is a strategy type.
This way you can overview the best settings depending on your pair & timeframe.
Parameters are available to filter.
█ Parameters:
Deviation: Parameter used to calculate parameters.
Depth: Parameter used to calculate parameters.
Confirmation Type: Type of signal used to confirme the pattern.
> Mid Pivot: pattern will confirm on mid pivot breakout.
> Opposit Pivot: pattern will confirm on opposit pivot breakout.
> No confirmation: no confirmation.
Lenght Avg Body: Lenght used to calculate the average body size.
First Breakout Factor: This factor multiplied by the "body avg" filters out the non-significant breakout of potential V pattern.
Confirmation Breakout Factor: This factor multiplied by the "body avg" filters out the non-significant breakout for the confirmation.
Max Bars Confirmation: The maximum number of bars needed to validate the pattern.
Pine Script® strategy
FunctionPatternFrequencyLibrary "FunctionPatternFrequency"
Counts the word or integer number pattern frequency on a array.
reference:
rosettacode.org
count(pattern)
counts the number a pattern is repeated.
Parameters:
pattern : : array : array with patterns to be counted.
Returns:
array : list of unique patterns.
array : list of counters per pattern.
usage:
count(array.from('a','b','c','a','b','a'))
count(pattern)
counts the number a pattern is repeated.
Parameters:
pattern : : array : array with patterns to be counted.
Returns:
array : list of unique patterns.
array : list of counters per pattern.
usage:
count(array.from(1,2,3,1,2,1))
Pine Script® library
Volume-Enhanced Candlestick Patterns 1
Overview
Scans for four major candlestick reversal patterns:
Harami
Engulfing
Morning/Evening Star
Piercing Line/Dark Cloud Cover
Underlying logic assumes that, at a turning point, the dominant side (bulls or bears) often delivers a “final” push—either a last surge of buying or selling—before the reversal truly takes hold.
Pattern Toggles
Each individual pattern can be turned on or off in the inputs.
Enable only the patterns you want to monitor to reduce chart clutter and speed up performance.
Volume Filter Toggle
On: Requires volume-based exhaustion or climax to confirm each pattern.
Off: Relies purely on price-action candlestick logic (no volume checks).
Grouped Labels & Confluence
When one or more patterns trigger on the same bar close, a single label is drawn:
Grouping multiple confirmed patterns on one bar increases confluence and signal strength.
Climax Volume × Multiplier
Adjusting this input affects signal frequency and conviction:
Higher multiplier → fewer signals but with stronger volume confirmation
Lower multiplier → more signals, each with a looser volume requirement
Alerts
Built-in alert condition for each individual pattern (bullish/bearish Harami, Engulfing, Star, Piercing, Dark Cloud Cover), so you can receive real-time notifications whenever a confirmation occurs.
Follow for Weekly Scripts
If you find this helpful, please hit Follow and 🚀button —I release a new scripts every week.
Disclaimer
Not Financial Advice. This script is for educational and research purposes only.
Use as Part of a Larger System. It should not be used in isolation; combine it with your own risk management rules, additional indicators, and broader market analysis.
No Guarantees. Candlestick patterns and volume filters can improve signal quality, but they do not guarantee profitable trades. Always perform your own due diligence before entering any position.
Pine Script® indicator
Candlestick Pattern Detector - Vijay PrasadOverview:
This Pine Script v6 indicator is designed to detect and label key candlestick patterns on TradingView charts. It provides real-time visual markers for major bullish and bearish reversal signals, aiding traders in decision-making.
Usefulness:
✅ Saves time by automating candlestick pattern detection.
✅ Reduces manual chart analysis errors.
✅ Works across all markets & timeframes.
✅ Enhances trading strategies with accurate signals.
Candlestick Patterns Recognises:
Bullish Engulfing – A strong bullish reversal pattern.
Bearish Engulfing – Indicates a potential downtrend.
Hammer – Suggests a market bottom or reversal.
Shooting Star – A bearish reversal signal at the top of an uptrend.
Doji – Signals market indecision and possible trend change.
Key Functions:
Automated Pattern Visible
Identifies candlestick patterns dynamically and plots them on the chart.
Visual Labels for Patterns
Labels to indicate specific candlestick formations.
Labels appear only when a valid pattern is detected, avoiding unnecessary clutter.
Buy/Sell Signal
Plots buy signals at bullish patterns and sell signals at bearish patterns.
Helps traders recognize trend reversals and entry/exit points.
Bullish Engulfing Pattern (Green Label)
What it means: A bullish engulfing pattern typically signals a potential reversal from a downtrend to an uptrend. The current candle fully engulfs the previous candle, signaling strong buying interest.
Identifying Candlestick Patterns on the Chart
How to use it:
Entry: Look for a green label (bullish engulfing) at the bottom of the chart. When it appears, consider entering a long position (buy).
Confirmation: To increase reliability, wait for confirmation by observing if price moves above the high of the bullish engulfing candle.
Exit: Exit when the trend shows signs of reversing or take profit at predefined levels (e.g., resistance or a risk-to-reward ratio).
Bearish Engulfing Pattern (Red Label)
What it means: A bearish engulfing pattern is a signal of a potential reversal from an uptrend to a downtrend. The current candle fully engulfs the previous candle, signaling strong selling pressure.
How to use it:
Entry: Look for a red label (bearish engulfing) at the top of the chart. When it appears, consider entering a short position (sell).
Confirmation: Wait for the price to move below the low of the bearish engulfing candle to confirm the bearish trend.
Exit: Close the trade when the price reaches support levels or the trend shows signs of reversing.
Doji Pattern (Blue Circle)
What it means: A Doji candle signals market indecision. It represents a balance between buyers and sellers, often marking a potential reversal or consolidation point.
How to use it:
Entry: If the Doji appears after a strong trend (bullish or bearish), wait for the next candle to break above or below the Doji's high or low. This can signal a continuation or reversal.
Confirmation: You can look for additional indicators like moving averages, RSI, or MACD for confirmation before taking any action.
Exit: Exit when the price shows clear momentum in your entry direction.
Hammer Pattern (Orange Triangle)
What it means: The hammer pattern is a bullish reversal pattern that appears after a downtrend. It suggests that sellers pushed the price down during the session, but buyers managed to push the price back up.
How to use it:
Entry: When a hammer appears, consider entering a long position (buy). The price should move above the hammer's high for confirmation.
Confirmation: Look for strong volume and a follow-up bullish candle to confirm the reversal.
Exit: Set a target based on the next resistance level, or use a trailing stop to lock in profits.
Using Candlestick Patterns with Other Indicators
To increase your chances of success, combine candlestick patterns with other technical indicators.
Here are some ideas:
RSI (Relative Strength Index): Use RSI to check whether the market is overbought or oversold. A bullish engulfing in an oversold market could indicate a stronger buy signal, and a bearish engulfing in an overbought market could indicate a stronger sell signal.
Moving Averages (e.g., 50 EMA, 200 EMA): Confirm trend direction. If the candlestick pattern aligns with the direction of the moving averages, it can give a stronger signal.
MACD (Moving Average Convergence Divergence): Use MACD to confirm momentum and potential trend changes. If a candlestick pattern aligns with a MACD crossover, it strengthens the signal.
Volume: Look for higher-than-average volume when a pattern appears. This can give you additional confirmation that the market is reacting strongly.
Practice and Refine
It's important to practice using the candlestick patterns in a demo account or backtest them to see how they perform under different market conditions. Over time, you can adjust the settings and patterns to fit your trading style and preferences.
Pine Script® indicator






















