Monster Harmonics Indicator is a harmonic pattern indicator. It recognizes Gartley, Bat, Crab, Butterfly, Cypher, White Swan, Black Swan, Shark and AB=CD patterns. Projected patterns that are not yet completed are recognized, too. Monster even shows the PRZ (Potential Reversal Zone).
Users can add their own user defined patterns to Monster.
Besides the current pattern, Monster also shows all patterns in the symbols history.
Monster will provide alerts for developing patterns.
Monster's default settings are good enough most of the time. Feel free to fine tune them to your needs.
- Show Control Panel? - show/hide control panel.
- Show Pattern Projections? - show/hide projected patterns.
- Show Invalidated Patterns? - show/hide invalidated patterns.
- Minimum Accuracy Percent - minimum accuracy percentage for pattern recognition.
- Price Must Touch All Minimum Ratios - set to true to force Monster to touch all minimum ratios, set this if you want the price to touch all minimum ratios and provide even better patterns.
- Show 'PatternName' Patterns? - show/hide specific pattern.
- Show Pattern Label? - set to true to show the pattern label in the chart.
- Show Pattern Accuracy? - set to true to show the pattern accuracy in the chart.
- Show Ratio Labels and Lines? - set to true to show the ratios of the pattern in the chart.
- Show Initialization User Patterns? - set to true to show the results of the initialization of the user patterns in the Experts tab.
- Show Fibonacci Projections in PRZ? - show/hide Fibonacci projections in PRZ.
- Show Perfect Ratio Levels? - show/hide perfect Fibonacci projections in different color.
- Show Risk/Reward in PRZ? - show/hide risk/reward PRZ.
- Show Alerts? - enable/disable all alerts.
- Show Screen Alerts? - show/hide screen alerts.
- Email Alerts? - set to true to email alerts.
- Push Alert Notifications? - set to true to push alerts.
- Color Palette - choose a color palette for a 'Dark' or 'Light' background.
- colo(u)rs - you know what to do.
- Zigzag parameters - set ZigZag parameters.
Perfect Fibonacci projections are the Fibonacci retracement levels where the pattern should retrace or stop according to its definition.
The Potential Reversal Zone (PRZ) is split in a Risk and Reward part. The Reward part of the PRZ is the price of the D point of the pattern to the 0.382 Fibonacci retracement from the C or A point (whichever is higher or lower).
Users can add their own patterns to Monster. Just modify the
Monster_UserPatterns.csv to include your patterns. The .csv file can be
found in the files folder of the User Data Directory. A sample pattern
is already included in the file.
Beginning from the version 2.300, Monster features an optional Control Panel. The Control Panel shows the current detected pattern. You can enable and disable projected patterns and the PRZ. Keep in mind that Monster updates your new settings on the next tick, so changes can take some seconds. The Control Panel can be dragged and minimized. Removing the Control Panel removes the indicator entirely.
Monster will work in the Strategy Tester. However, only the last pattern, if any, in the virtual price feed is detected and displayed. This is a limitation of the Strategy Tester. Monster is best tested in Visual Mode as you can see the detected patterns in the display. Try EURUSD on H1 starting January 1, 2017.
DevelopersMonster publishes the current pattern through the iCustom() function.
Example script code:
#define PATTERN_GARTLEY 0
#define PATTERN_BAT 1
#define PATTERN_CRAB 2
#define PATTERN_BUTTERFLY 3
#define PATTERN_CYPHER 4
#define PATTERN_BLACK_SWAN 5
#define PATTERN_WHITE_SWAN 6
#define PATTERN_SHARK 7
#define PATTERN_ABCD 8
#define PATTERN_DRAGON 9
#define IS_BULLISH 0
#define IS_BEARISH 1
int pattern = (int)iCustom( Symbol(), Period(), "Market\\Monster Harmonics", "", false, maxBars, true, 90.0, 1, 0 );
int direction = (int)iCustom( Symbol(), Period(), "Market\\Monster Harmonics", "", false, maxBars, true, 90.0, 1, 1 );
bool projected = (bool)iCustom( Symbol(), Period(), "Market\\Monster Harmonics", "", false, maxBars, true, 90.0, 1, 2 );
switch ( pattern )
patternName = "NONE";
patternName = "GARTLEY";
patternName = "BAT";
patternName = "CRAB";
patternName = "BUTTERFLY";
patternName = "CYPHER";
patternName = "BLACK_SWAN";
patternName = "WHITE_SWAN";
patternName = "SHARK";
patternName = "ABCD";
patternName = "DRAGON";
patternName = "USER DEFINED (index=" + IntegerToString( pattern ) + ")";
if ( pattern != PATTERN_NONE )
Print ( "Pattern found: ", patternName, "|", direction == IS_BULLISH ? "Bullish" : "Bearish", "|", projected ? "Projected" : "Completed" );
for ( int i = maxBars; i >= 0; i-- )
double price = iCustom( Symbol(), Period(), "Market\\Monster Harmonics", "", false, maxBars, true, 90.0, 2, i );
if ( price != EMPTY_VALUE )
Print ( "Pattern point at bar: ", i, ", price :", NormalizeDouble( price, 4 ) );
Print ( "Pattern found: NONE" );
Monster will only repaint the last point of the pattern (the D point) to its definition, it follows price. Other points (X, A, B, C) are not repainted.