The indicator detects and displays the AB=CD harmonic pattern on the chart according to the scheme provided in the screenshot. The pattern is
plotted by the extreme values of the ZigZag indicator (included in the resources, does not require additional installation). After
detecting the pattern, the indicator notifies of that by the pop-up window, a mobile notification and an email. The indicator highlights
not only the complete figure, but also the time of its formation. During the formation the figure is displayed by triangle outlines. Once the
figure is finally formed, a potential reversal zone is displayed on the chart. The basic figure proportions are set in the parameters. The
intermediate values are calculated proportionally. The parameters include a tolerance (CD_accuracy), which determines the accuracy of
the cd/bc ratios. For example, if the calculated value of cd/bc = 1.0 and tolerance is set to 0.1, then the program will use the range of 0.9 ..
1.1
Parameters
- zzDepth, zzDev, zzBack – ZigZag parameters
- BC_min (bc/ab), BC_max (bc/ab) – minimum and maximum ratio of BC and AB levels
- CD_min (cd/bc), CD_max (cd/bc) – minimum and maximum ratio of CD and BC levels
- CD_accuracy – tolerance of the cd/bc ratio
- bearColor – bearish pattern color
- bullColor – bullish pattern color
- CountBars – limit the amount of bars to be processed by the indicator (reduces the initial download time)
- UseAlert – enable pop-up messages
- UseNotification – enable push notifications
- UseMail – enable email notifications
- prefix – text label to ensure the uniqueness of the indicator objects on the chart (if multiple indicators are attached to
the chart, different values must be entered in these parameters) - MessageAdd – the text string added to the notifications sent by the indicator.
- CustomEventBuy,CustomEventSell – chart events
Sample to use signals in EA:
void OnTick() { double x; x = iCustom(Symbol(),PERIOD_CURRENT,"Harmonic-ABCD",0,1); if (x != 0 && x != EMPTY_VALUE) goBuy(); x = iCustom(Symbol(),PERIOD_CURRENT,"Harmonic-ABCD",2,1); if (x != 0 && x != EMPTY_VALUE) goSell(); } void goBuy() { // function for open BUY } void goSell() { // function for open SELL }
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { switch (id) { case CHARTEVENT_CUSTOM+100: goBuy(); break; case CHARTEVENT_CUSTOM+101: goSell(); break; } } void goBuy() { // function for open BUY } void goSell() { // function for open SELL }