//+------------------------------------------------------------------+ //| Custom Moving Averages.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 Average" #property strict #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Red //--- indicator parameters input int InpMAPeriod=10; // Period input int InpMAShift=0; // Shift input ENUM_MA_METHOD InpMAMethod=MODE_SMA; // Method //--- indicator buffer double ExtLineBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit(void) { string short_name; int draw_begin=InpMAPeriod-1; //--- indicator short name switch(InpMAMethod) { case MODE_SMA : short_name="SMA("; break; case MODE_EMA : short_name="EMA("; draw_begin=0; break; case MODE_SMMA : short_name="SMMA("; break; case MODE_LWMA : short_name="LWMA("; break; default : return(INIT_FAILED); } IndicatorShortName(short_name+string(InpMAPeriod)+")"); IndicatorDigits(Digits); //--- check for input if(InpMAPeriod<2) return(INIT_FAILED); //--- drawing settings SetIndexStyle(0,DRAW_LINE); SetIndexShift(0,InpMAShift); SetIndexDrawBegin(0,draw_begin); //--- indicator buffers mapping SetIndexBuffer(0,ExtLineBuffer); //--- initialization done return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Moving Average | //+------------------------------------------------------------------+ 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[]) { //--- check for bars count if(rates_total