• Overview
  • Reviews (1)
  • Comments (33)
  • What's new

PZ Candlestick Patterns

Are you a price action trader? The PZ Candlestick Patterns indicator recognizes over 30 Japanese Candlestick Patterns and highlights them beautifully on the chart. It detects all patterns regardless the noise taking place on the market, and is simply one of those indicators price action traders can't live without.

  • Boost your technical analysis overnight
  • Detect japanese candlestick patterns easily
  • Trade reliable and universal reversal patterns
  • Hop into established trends safely using continuation patterns
  • It detects 1-bar, 2-bar, 3-bar and multi-bar patterns
  • It detects reversal, continuation and weakness patterns
  • Patterns can be enabled or disabled
  • It implements email/sound/visual alerts
  • The indicator is non-repainting
Bullish patterns are labeled in blue, bearish patterns are labeled in red and neutral patterns are labeled in gray.

List of Candlestick Patterns Detected

  • Break-Away (a.k.a Line Strikes) from 1 to 5 bars
  • Fakey (a.k.a Hikkake)
  • Counter Gap
  • Three Soldiers / Three Crows
  • Hammers / Shooting Star / Hanging Man
  • Engulfing
  • Outside Up / Outside Down
  • Harami
  • Inside Up / Inside Down
  • Morning Star / Evening Star
  • Kicker
  • Piercing / Dark Cloud
  • Belt Hold
  • Rising Three / Falling Three from 1 to 5 bars
  • Tasuki Gap
  • Side by Side Gap
  • Windows
  • Advance Block / Descend Block
  • Deliberation
  • Marubozu
  • Squeeze Alert (a.k.a Master Candle)
  • Dojis


When loading the indicator to any chart, you will be presented with a set of options as input parameters. Don't despair if you think they are too many, because parameters are grouped into self-explanatory blocks. This is what each parameter does.

  • PaintBars
    Switch on/off the highlighting of patterns using the color of the bars.
  • DisplayLabels
    Show or hide text labels displaying the name of the recognized patterns.
  • BullLabel / BearLabel
    Choose the color of the text labels for bullish and bearish patterns.
  • DisplayRectangles
    Show or hide boxes surrounding the recognized patterns.
  • BullRectangle / BearRectangle
    Choose the color of the rectangles for bullish and bearish patterns.
  • 1-Bar Patterns
    Switch on/off recognition of 1-bar patterns one by one: Hammers, Shooting Stars, Marubozus, Kickers, Windows and Dojis.
  • 2-Bar Patterns
    Switch on/off recognition of 2-bar patterns one by one: Engulfing, Harami, Piercing, Dark Cloud and Belt Hold.
  • 3-bar Patterns
    Switch on/off recognition of 3-bar patterns and beyond. Inside Up, Inside Down, Morning Star, Evening Star, Three Soldiers, Three Crows, Advance Blocks, Descend Blocks, Rising Three (and combinations), Tasuki Gaps, Side-By-Side Gaps, Counter Gaps, Deliberations, Squeeze Alerts, Fakey and Break-Away (and combinations).
  • DonchianFilter
    This option only applies to reversal patterns. Since reversal patterns are only valid at the end of a trend, some kind of condition must be placed to display or ignore certain patterns. A Donchian Filter allows us to filter any reversal pattern using the highest/lowest of the desired last number of bars. The default behavior is to ignore bearish reversal patterns below the highest of the last four bars, and ignore bullish reversal patterns above the lowest of the last four bars. This parameter allows you to switch on/off this filter.
  • ReversalDonchian
    The desired number of bars to evaluate in order to display or ignore reversal patterns. (Only applies if the above option is enabled)
  • RedundantReversals
    Reversal patterns often take place one after another as the market turns its direction, signaling the reversal more than once as the price evolves. For example, it is frequent to see reversals very similar to the following. A Bullish Hammer (Bar 1), followed by an Engulfing Pattern (Bar 2), an Outside Up Pattern (Day 3) and Three Soldiers (Day 4), being all of them redundant reversal patterns after the first hammer took place. If disabled, the RedundantReversals parameter eliminates this redundancy and hides future reversal patterns in the same direction after the first valid one. This feature is very useful if you are visually backtesting charts but not so much for live trading, since you want to receive as many signals as possible -or perhaps didn't trade the first hammer-. Make sure to enable this option for live trading, in order to see all opportunities and receive alerts.
  • Alerts

    Enable alerts, email alerts and/or sound alerts for the patterns enabled above.

Some Nitty-Gritty Details

  • The indicator is evaluated bar by bar, not tick by tick.
  • Colors, labels and rectangles are customizable.
  • Patterns can be disabled or enabled.
  • The indicator implements alerts.


In order to build an expert advisor, you can read data from the indicator using the iCustom() function as exemplified below.

//---- Step 1: Define constants in your EA
#define  AL_HAMMER_BUY     1     // Hammer
#define  AL_HAMMER_SELL    2     // Shooting Star
#define  AL_ENGULFING_BUY  3     // Bullish Engulfing 
#define  AL_ENGULFING_SELL 4     // Bearish Engulfing
#define  AL_DOJI_BUY       5     // Doji (expected up)
#define  AL_DOJI_SELL      6     // Doji (expected down)
#define  AL_HARAMI_BUY     7     // Bullisj Harami
#define  AL_HARAMI_SELL    8     // Bearish Harami
#define  AL_PIERCING_BUY   9     // Piercing
#define  AL_PIERCING_SELL  10    // Dark-Cloud
#define  AL_KICKER_BUY     13    // Bullish Kicker
#define  AL_KICKER_SELL    14    // Bearish Kicker
#define  AL_MSTAR_BUY      15    // Morning Star
#define  AL_MSTAR_SELL     16    // Evening Star
#define  AL_SOLDIERS_BUY   17    // Three Soldiers
#define  AL_SOLDIERS_SELL  18    // Three Crows
#define  AL_RISING_BUY     19    // Rising Three (1,2,3,4 and 5)
#define  AL_RISING_SELL    20    // Falling Three (1,2,3,4 and 5)
#define  AL_TASUKI_BUY     21    // Tasuki Gap (bullish)
#define  AL_TASUKI_SELL    22    // Tasuki Gap (bearish) 
#define  AL_CGAP_BUY       23    // Counter-Gap (bullish)
#define  AL_CGAP_SELL      24    // Counter-Gap (bearish)
#define  AL_DELIBERATION_B 25    // Deliberation (bullish)
#define  AL_DELIBERATION_S 26    // Delibaration (bearish)
#define  AL_WEAKBLOCKS_B   27    // Weak Blocks (bullish)
#define  AL_WEAKBLOCKS_S   28    // Weak Blocks (bearish)
#define  AL_SQUEEZE_BUY    29    // Squeeze (bullish) 
#define  AL_SQUEEZE_SELL   30    // Squeeze (bearish)
#define  AL_BREAKAWAY_BUY  31    // Break-Away (bullish)
#define  AL_BREAKAWAY_SELL 32    // Break-Away (bearish)
#define  AL_WINDOW_BUY     33    // Window (bullish)
#define  AL_WINDOW_SELL    34    // Window (bearish)
#define  AL_SIDESIDE_BUY   35    // Side by Side (bullish)
#define  AL_SIDESIDE_SELL  36    // Side by Side (bearish)
#define  AL_OUTSIDE_BUY    37    // Outside Up 
#define  AL_OUTSIDE_SELL   38    // Outside Down
#define  AL_INSIDE_BUY     39    // Inside Up
#define  AL_INSIDE_SELL    40    // Inside Down
#define  AL_MARUBOZU_BUY   41    // Marubozu (bullish)
#define  AL_MARUBOZU_SELL  42    // Marubozu (bearish)
#define  AL_FAKEY_BUY      43    // Fakey (bullish)
#define  AL_FAKEY_SELL     44    // Fakey (bearish)
#define  AL_BELTHOLD_BUY   45    // Belt-Hold (bullish)  
#define  AL_BELTHOLD_SELL  46    // Belt-Hold (bearish)

//---- Step 2: Read values
int start()
   // Read pattern and breakout buffer
   double pattern  = iCustom(Symbol(), Period(), "Market\\pz-candle-patterns", 1, 1);
   // Use constants defined above to identify the pattern. For example...
   if(pattern == AL_HAMMER_BUY)      { /* Your code for bullish hammer */ }
   if(pattern == AL_ENGULFING_SELL)  { /* Your code for bearish engulfing */ }
   if(pattern == AL_HARAMI_BUY)      { /* Your code for bullish harami */ }
   if(pattern == AL_PIERCING_BUY)    { /* Your code for bullish piercing */ }
   if(pattern == AL_PIERCING_SELL)   { /* Your code for bearish dark cloud */ }
   if(pattern == AL_SOLDIERS_SELL)   { /* Your code for bullish three soldiers */}
   if(pattern == AL_RISING_SELL)     { /* Your code for falling three (1,2,3,4 and 5) */ }
   if(pattern == AL_TASUKI_BUY)      { /* Your code for bullish tasuki gap */ }
   if(pattern == AL_BREAKAWAY_SELL)  { /* Your code for bullish break-away */ }
   if(pattern == AL_FAKEY_SELL)      { /* Your code for bearish fakey */ }
   if(pattern == EMPTY_VALUE)        { /* Your code if no pattern */}
   // Exit


Arturo López Pérez, private investor and speculator, software engineer and founder of Point Zero Trading Solutions.

Wantanakorn 2017.02.20 05:41 

Probably the most complete candle patterns indicator, very simple and easy to use.

Version 4.0 2016.08.23
- Bug fix regarding invisible buffers
Version 3.0 2016.04.26
- Improved Alerts
Version 2.5 2015.07.31
- Important bug fix. Please update.
Version 2.0 2015.07.28
- Added multi-timeframe dashboard