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.
  • It detects 19 different harmonic 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
  • 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
Patterns detected are...
  • Bat
  • Gartley
  • Crab
  • Butterfly
  • Shark
  • Cypher
  • Alternate Bat
  • Alternate Shark
  • Deep Crab
  • White Swan
  • Black Swan
  • Max Bat
  • Max Gartley
  • Max Butterfly
  • A-Crab
  • A-Butterfly
  • A-Bat
  • A-Gartley
  • Sea Pony
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 Size parameter controls the size of the patterns to be found, expressed as minimum amount of bars between alternative points. The Max. History Bars parameter controls how many past bars are examined to minimize memory usage, and the Breakout Period is the amount of bars to be broken before a buy or sell signal is raised.
Pattern Settings
Enable or disable harmonic patterns at will. Disable those you don't want to use.
Drawing Settings
Configure the colors of bullish and bearish patterns, as well as font sizes.
Enable or disable ratios and choose your own ratio colors.
Display or hide the fibonacci projections on the chart
Enable or disable breakouts, and set your desired arrow sizes and colors.
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
#define OP_BUY_DEEP_CRAB      15
#define OP_SELL_DEEP_CRAB     16
#define OP_BUY_WHITE_SWAN     17
#define OP_SELL_WHITE_SWAN    18
#define OP_BUY_BLACK_SWAN     19
#define OP_SELL_BLACK_SWAN    20
#define OP_BUY_MAX_BAT        21
#define OP_SELL_MAX_BAT       25
#define OP_BUY_MAX_GARTLEY    26
#define OP_SELL_MAX_GARTLEY   27
#define OP_BUY_A_CRAB         30
#define OP_SELL_A_CRAB        31
#define OP_BUY_A_BUTTERFLY    32
#define OP_SELL_A_BUTTERFLY   33
#define OP_BUY_A_BAT          34
#define OP_SELL_A_BAT         35
#define OP_BUY_A_GARTLEY      36
#define OP_SELL_A_GARTLEY     37
#define OP_BUY_SEA_PONY       38
#define OP_SELL_SEA_PONEY     39
#define OP_BUY_ALT_SHARK      40
#define OP_SELL_ALT_SHARK     41
//---- 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 */ }
/* All other pattern constants above can be evaluated here too */
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?
Does the indicator repaint?
Pattern rations in the chart differ from the definition ones...
When is a pattern displayed?
Is the multi-timeframe scanner part of the main indicator?
Does it implement alerts?