MACD_Mirror

Download script
MACD_Mirror

The MACD Mirror tool is a specialized technical analysis indicator designed to provide traders with a multi-dimensional view of market momentum. By utilizing and "mirroring" standard Moving Average Convergence Divergence (MACD) principles, it helps identify the relationship between opening and closing prices more clearly than a standard indicator might allow.

How the Logic Works

The core functionality of this tool is built on three distinct data streams that calculate different aspects of price action:

1. The Primary Momentum (MACD) The first component calculates the difference between the Exponential Moving Average (EMA) of the Closing Price and the EMA of the Opening Price. This tells you the direction in which the price is moving relative to where it started during the current period.

2. The Mirror Momentum (MACD2) This is the unique "mirror" component. Instead of looking at the close vs. the open, it reverses the logic by calculating the difference between the EMA of the Opening Price and the EMA of the Closing Price. By displaying this alongside the primary momentum, the tool allows you to see a symmetrical reflection of price movement, making it easier to spot extremes or reversals in price flow.

3. The Signal Line To smooth out the fluctuations of these two data points and provide actionable trend information, the script calculates a third "Signal Line." This line takes the Primary Momentum (MACD) and applies a Simple Moving Average (SMA) to it. This helps filter out market "noise" and identifies the general direction of the trend.

Summary for Traders

By combining these three elements into a single visual window, the tool provides a comprehensive view of price dynamics:

  • Red/Blue Lines: Represent the primary and mirrored momentum values, showing how aggressively the price is pulling away from its opening point.
  • Yellow Line: Acts as the smoothed guide to help identify when momentum is shifting significantly enough to suggest a potential change in trend.

This dual-perspective approach is intended to give you a clearer picture of market volatility and balance by visualizing both the standard movement and its mathematical opposite simultaneously.

Indicators Used
Moving average indicatorMoving average indicator
Miscellaneous
Implements a curve of type %1
8 Views
0 Downloads
0 Favorites
MACD_Mirror

//+------------------------------------------------------------------+
//|                                                  MACD_Mirror.mq4 |
//|                           Copyright © 2010, Andy Tjatur Pramono. |
//|                                            andy.tjatur@gmail.com |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2010, Andy Tjatur Pramono."
#property  link      "andy.tjatur@gmail.com"
//---- indicator settings
#property  indicator_separate_window
#property indicator_level1 0
#property indicator_levelcolor Yellow
#property  indicator_buffers 3
#property  indicator_color1  Red
#property  indicator_color2  Blue
#property  indicator_color3  Yellow
#property  indicator_width1  2
#property  indicator_width2  2
#property  indicator_width3  2
//---- indicator parameters
extern int PeriodeEMA=20;
extern int SignalSMA=9;
//---- indicator buffers
double     MacdBuffer[];
double     Macd2Buffer[];
double     SignalBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexDrawBegin(2,SignalSMA);
   IndicatorDigits(Digits+1);
//---- indicator buffers mapping
   SetIndexBuffer(0,MacdBuffer);
   SetIndexBuffer(1,Macd2Buffer);
   SetIndexBuffer(2,SignalBuffer);
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("MACD_Mirror by Andy Tjatur("+PeriodeEMA+","+SignalSMA+")");
   SetIndexLabel(0,"MACD");
   SetIndexLabel(1,"MACD2");
   SetIndexLabel(2,"Signal");
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| MACD MIRROR                          |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd mirror counted in the 1-st buffer
   for(int i=0; i<limit; i++)
   
      MacdBuffer[i]=iMA(NULL,0,PeriodeEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,PeriodeEMA,0,MODE_EMA,PRICE_OPEN,i);
      
//---- macd mirror counted in the 2-nd buffer
   for( i=0; i<limit; i++)
   
      Macd2Buffer[i]=iMA(NULL,0,PeriodeEMA,0,MODE_EMA,PRICE_OPEN,i)-iMA(NULL,0,PeriodeEMA,0,MODE_EMA,PRICE_CLOSE,i);      
 
//---- signal line mirror counted in the 3-rd buffer
   for( i=0; i<limit; i++)
      SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- done
   return(0);
  }
//+------------------------------------------------------------------+

Comments