Harmonics 5.0

Metatrader (MT4/MT5) Indicator

"Harmonic patterns profit from the natural order of the financial markets."
- Scott M. Carney
The PZ Harmonics Indicator is the most complete harmonic patterns auto-recognition indicator, and takes fibonacci projections as seriously as you do.
  • Detects Bat, Alt. Bat, Gartley, Crab, Butterfly, Cypher and Shark patterns
  • It plots primary, derived and complementary Fibonacci projections
  • It evaluates past price action and displays every past pattern
  • It includes a multi-symbol and multi-timeframe scanner
  • It implements a multi-timeframe dashboard
  • The indicator analyzes its own quality and performance
  • It uses breakouts to signal profitable entries
  • It plots all the pattern ratios on the chart
Inspired by Scott M. Carney's book, this indicator has been designed to fulfill the needs of the most purist and exigent traders. Its winning ratio is around 85%
  • Fibonacci projections are vector-independent
  • It implements email/sound/push alerts
  • It plots the AB=CD projection
Enhance your trading activity with the best Harmonic Patterns auto-detection indicator, just like our customers have already done.


A brief introduction

The harmonic methodology utilizes the recognition of specific price patterns and the alignment of exact Fibonacci ratios to determine highly probable reversal points in the financial markets. This methodology assumes that trading patterns or cycles, like many patterns and cycles in life, repeat themselves. The key is to identify these patterns, and to enter or to exit a position based upon a high degree of probability that the same historic price action will occur. Although these patterns are not 100% accurate, these situations have been historically proven. If these set-ups are identified correctly, it is possible to identify significant opportunities with a very limited risk.

The Potential Reversal Zone (PRZ)

The concept of the Potential Reversal Zone (PRZ) was originally outlined by Scott M. Carney in his book. A wholeheartedly recommended reading.

History has proven that a convergence of Fibonacci numbers and price patterns provides a highly probable area for a reversal. This area of convergence is called the potential reversal zone. When three, four, or even five numbers come together within a specific area, you must respect the high probability for some type of reversal.

A Potential Reversal Zone (PRZ) represents the critical areas where the flow of buying and selling is potentially changing. These harmonic zones attempt to identify the price levels where imbalanced overbought and oversold situations are reversing back to their respective equilibrium level.

An ideal reversal usually tests all of the price levels in the Potential Reversal Zone (PRZ) on the initial test. The predominant trend usually reverses from this initial test of the entire PRZ and continues in the reversal direction shortly thereafter. In an ideal reversal, the price bar that tests all of the fibonacci projections in the PRZ is called the Terminal Price Bar.

The trade must be taken when the Potential Reversal Zone (PRZ) has been tested and rejected by a Terminal Price Bar or a strong breakout has taken place in the reversal direction without testing all the PRZ levels. The farthest price level of the PRZ or the Point X of the pattern are suitable stop-loss levels.

Harmonic Ratios

The indicator calculates all the important fibonacci ratios for the XA and BC vectors of the pattern, and plots them by the Point D if applicable.

Primary Ratios
Directly derived from the Fibonnaci Number Sequence.
- 0.618 = Primary Ratio
- 1.618 = Primary Projection
Primary Derived Ratios
- 0.786 = Square root of 0.618
- 0.886 = Fourth roof of 0.618 or Square root of 0.786
- 1.130 = Fourth root of 1.618 or Square root of 1.27
- 1.270 = Square root of 1.618
Complementary Derived Ratios
- 0.382 = (1 - 0.618) or 0.618e2
- 0.500 = 0.770e2
- 0.707 = Square root of 0.50
- 1.410 = Square root of 2.0
- 2.000 = 1 + 1
- 2.240 = Square root of 5
- 2.618 = 1.618e2
- 3.141 = Pi
- 3.618 = 1 + 2.618
Trade Execution

Once a pattern is detected, the following steps have to be taken, which can lead to take or discard the trade. Bear in mind that a pattern is not valid by itself and it can expand as long as it likes. Your job has an trader is to assess the validity of the pattern and the potential reversal zone before entering the market.

1. Pattern Recognition
This indicator auto-detects and alerts harmonic patterns.
2. Find the Potential Reversal Zone (PRZ)
Evaluate the fibonacci projections plotted on the chart by the indicator and look for strength signs. Can you find at least three converging projections? Do you see primary ratios? Is the AB=CD projection present?
3. Wait until the PRZ is rejected by the market
The PRZ can be tested and rejected by one single Terminal Price Bar, or the market can reverse and breakout the PRZ without testing all the fibonacci projections. In any case, the market has to move before you take the trade. You are a follower, not a predictor.

4. Enter the market setting the proper stop-loss
Trade the breakout or the rejection of the PRZ and set the proper stop-loss. The farthest price level of the PRZ or the Point X of the pattern are suitable stop-loss levels.
5. Position Management
It is recommended to reap partial profits as soon as possible to lock into a free ride. Scott M. Carney proposes a very interesting position management system based on a 0.382 Trailing Stop, measured from the reversal point to the reversal extreme.

The Potential Reversal Zone (PRZ) is a crucial element in the trading process. Hence the importance of vector-independent primary, derived and complementary fibonacci projections, which all other harmonic indicators ignore completely.

Some trading examples

The following are trading examples using Harmonic Patterns. The trade is taken when the Potential Reversal Zone (PRZ) is rejected.

Settings and Input Parameters

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.

Indicator Settings
The indicator is constantly looking for tops and bottoms. The amplitude is the minimal amount of bars where there will not be two tops or two bottoms. Increase the period to see bigger patterns or for intraday trading. Enable OnlyPerfectPatterns to display only perfect and pure harmonic patterns, with perfect ratio measurements. The MaxHistoryBars parameter controls how many past bars are examined to minimize memory usage.
Choose your own pattern colors.
Enable or disable labels and choose your own label color.
Enable or disable ratios and choose your own ratio color.
Display or hide the fibonacci projections on the chart
Enable display/email/push/sound alerts for patterns.

In order to build your expert advisor, you can read data from the indicator using the iCustom() function as exemplified below. Read more information about the iCustom() function here.

//---- Step 1: Define constants in your EA
#define OP_BUY_BAT            1
#define OP_SELL_BAT           2
#define OP_BUY_GARTLEY        3
#define OP_SELL_GARTLEY       4
#define OP_BUY_CRAB           5
#define OP_SELL_CRAB          6
#define OP_BUY_BUTTERFLY      7
#define OP_SELL_BUTTERFLY     8
#define OP_BUY_SHARK          9
#define OP_SELL_SHARK         10
#define OP_BUY_CYPHER         11
#define OP_SELL_CYPHER        12
//---- Step 2: Read values from the signal buffer
int start()
// Read pattern and breakout buffer
double pattern  = iCustom(Symbol(), Period(), "PZ_HarmonicTrading_LICENSE", 0, 1);
double breakout = iCustom(Symbol(), Period(), "PZ_HarmonicTrading_LICENSE", 1, 1);
// Do something
if(pattern == OP_BUY_BAT)        { /* Your code for bullish bat pattern */ }
if(pattern == OP_SELL_BAT)       { /* Your code for bearish bat pattern */ }
if(pattern == OP_BUY_GARTLEY)    { /* Your code for bullish gartley pattern */ }
if(pattern == OP_SELL_GARTLEY)   { /* Your code for bearish gartley pattern */ }
if(pattern == OP_BUY_CRAB)       { /* Your code for bullish crab pattern */ }
if(pattern == OP_SELL_CRAB)      { /* Your code for bearish crab pattern */ }
if(pattern == OP_BUY_BUTTERFLY)  { /* Your code for bullish butterfly pattern */ }
if(pattern == OP_SELL_BUTTERFLY) { /* Your code for bearish butterfly pattern */ }
if(pattern == OP_BUY_SHARK)      { /* Your code for bullish shark pattern */ }
if(pattern == OP_SELL_SHARK)     { /* Your code for bearish shark pattern */ }
if(pattern == OP_BUY_CYPHER)     { /* Your code for bullish cyhper pattern */ }
if(pattern == OP_SELL_CYPHER)    { /* Your code for bearish cypher pattern */ }
if(breakout == OP_BUY)           { /* Your code for bullish breakout (blue arrow) */}
if(breakout == OP_SELL)          { /* Your code for bearish breakout (red arrow) */}
if(pattern == EMPTY_VALUE && breakout == EMPTY_VALUE) { /* No pattern or breakout */}
// Exit
Frequently Asked Questions
Do you have a manual or documentation?
Seriously? Do I really have to read that long book?
Does the indicator repaint?
Which is the recommended exit strategy?
I want to see only perfect patterns!