Adding arrow object to MACD histogram direction change?

 

I am new to programming and struggling with my first task..

I want to add an arrow to the chart using object create when MACD histogram changes direction. Please can someone advise where to place this in code, and how to go about about doing this... do I create conditions using ExtMacdBuffer and when met use object create?

Where should I put this in the code?

Any help is much appreciated!

Thanks!

//+------------------------------------------------------------------+

//|                                                  Custom MACD.mq4 |

//|                   Copyright 2005-2014, MetaQuotes Software Corp. |

//|                                              http://www.mql4.com |

//+------------------------------------------------------------------+

#property copyright   "2005-2014, MetaQuotes Software Corp."

#property link        "http://www.mql4.com"

#property description "Moving Averages Convergence/Divergence"

#property strict



#include <MovingAverages.mqh>



//--- indicator settings

#property  indicator_separate_window

#property  indicator_buffers 2

#property  indicator_color1  Silver

#property  indicator_color2  Red

#property  indicator_width1  2

//--- indicator parameters

input int InpFastEMA=12;   // Fast EMA Period

input int InpSlowEMA=26;   // Slow EMA Period

input int InpSignalSMA=9;  // Signal SMA Period

//--- indicator buffers

double    ExtMacdBuffer[];

double    ExtSignalBuffer[];

//--- right input parameters flag

bool      ExtParameters=false;



//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int OnInit(void)

  {

   IndicatorDigits(Digits+1);

//--- drawing settings

   SetIndexStyle(0,DRAW_HISTOGRAM);

   SetIndexStyle(1,DRAW_LINE);

   SetIndexDrawBegin(1,InpSignalSMA);

//--- indicator buffers mapping

   SetIndexBuffer(0,ExtMacdBuffer);

   SetIndexBuffer(1,ExtSignalBuffer);

//--- name for DataWindow and indicator subwindow label

   IndicatorShortName("MACD("+IntegerToString(InpFastEMA)+","+IntegerToString(InpSlowEMA)+","+IntegerToString(InpSignalSMA)+")");

   SetIndexLabel(0,"MACD");

   SetIndexLabel(1,"Signal");

//--- check for input parameters

   if(InpFastEMA<=1 || InpSlowEMA<=1 || InpSignalSMA<=1 || InpFastEMA>=InpSlowEMA)

     {

      Print("Wrong input parameters");

      ExtParameters=false;

      return(INIT_FAILED);

     }

   else

      ExtParameters=true;

//--- initialization done

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Moving Averages Convergence/Divergence                           |

//+------------------------------------------------------------------+

int OnCalculate (const int rates_total,

                 const int prev_calculated,

                 const datetime& time[],

                 const double& open[],

                 const double& high[],

                 const double& low[],

                 const double& close[],

                 const long& tick_volume[],

                 const long& volume[],

                 const int& spread[])

  {

   int i,limit;

//---

   if(rates_total<=InpSignalSMA || !ExtParameters)

      return(0);

//--- last counted bar will be recounted

   limit=rates_total-prev_calculated;

   if(prev_calculated>0)

      limit++;

//--- macd counted in the 1-st buffer

   for(i=0; i<limit; i++)

      ExtMacdBuffer[i]=iMA(NULL,0,InpFastEMA,0,MODE_EMA,PRICE_CLOSE,i)-

                    iMA(NULL,0,InpSlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//--- signal line counted in the 2-nd buffer

   SimpleMAOnBuffer(rates_total,prev_calculated,0,InpSignalSMA,ExtMacdBuffer,ExtSignalBuffer);

//--- done

   return(rates_total);

  }

//+------------------------------------------------------------------+
 

Forum on trading, automated trading systems and testing trading strategies


Hello,

Please use the SRC button when you post code. Thank you.


This time, I edited it for you.