Code Forex MT4 Indicators

MACD trend- indicator for MetaTrader 4

//=============//#property copyright \”Copyright 2019, Nikolaos Pantzos\”#property link      \”https://www.mql5.com/en/users/pannik\”#property version   \”1.0\”#property strict//=============//#property indicator_separate_window#property indicator_buffers 2#property indicator_color1 clrDodgerBlue#property indicator_color2 clrRed//=============//extern int FastPeriod=12;extern int SlowPeriod=26;extern int SignalPeriod=9;extern ENUM_APPLIED_PRICE AppliedPrice=PRICE_CLOSE;extern int BarsForAveragePrice=140;extern double PercentageLevelUp=25;extern double PercentageLevelDn=25;//===============//double UpBuffer[];double DnBuffer[];//==============//int OnInit(void)  {//——————————————————————————–   string iName=\”iMACD_Histo(\”+IntegerToString(FastPeriod)+\”,\”+IntegerToString(SlowPeriod)+\”,\”+IntegerToString(SignalPeriod)+\”)\”;//——————————————————————————–   IndicatorShortName(iName);   IndicatorDigits((int)MarketInfo(Symbol(),MODE_DIGITS));//——————————————————————————–   SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);   SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,3);   SetIndexBuffer(0,UpBuffer);   SetIndexBuffer(1,DnBuffer);//——————————————————————————–   SetIndexLabel(0,\”UpTrend\”);   SetIndexLabel(1,\”DownTrend\”);//——————————————————————————–   SetIndexDrawBegin(0,SlowPeriod);   SetIndexDrawBegin(1,SlowPeriod);//——————————————————————————–   return(INIT_SUCCEEDED);//——————————————————————————–  }//==============//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 IndicatorShift=0;   int IndicatorTrend=0;   double IndicatorValue=0;   double AvrgValue=0;//——————————————————————————–   for(IndicatorShift=Bars-SlowPeriod-1; IndicatorShift>=0; IndicatorShift–)     {      AvrgValue=iMACD(NULL,0,FastPeriod,BarsForAveragePrice,SignalPeriod,AppliedPrice,MODE_MAIN,IndicatorShift);      IndicatorValue=iMACD(NULL,0,FastPeriod,SlowPeriod,SignalPeriod,AppliedPrice,MODE_MAIN,IndicatorShift);      //—      if(IndicatorValue>AvrgValue+((AvrgValue*PercentageLevelDn)/100))         IndicatorTrend=-1;      if(IndicatorValue<AvrgValue-((AvrgValue*PercentageLevelUp)/100))         IndicatorTrend=1;      //—      if(IndicatorTrend>0)        {         if(IndicatorValue>AvrgValue-((AvrgValue*PercentageLevelUp)/100)/2)            UpBuffer[IndicatorShift]=1.0;         else            UpBuffer[IndicatorShift]=1.0;         DnBuffer[IndicatorShift]=0;        }      //—      if(IndicatorTrend<0)        {         if(IndicatorValue<AvrgValue+((AvrgValue*PercentageLevelDn)/100)/2)            DnBuffer[IndicatorShift]=1.0;         else            DnBuffer[IndicatorShift]=1.0;         UpBuffer[IndicatorShift]=0;        }     }//———————————————————————————–   return(rates_total);//———————————————————————————–  }//===============//

by admin