//+------------------------------------------------------------------+ //| iACfunc.mq4 | //| Author: paladin80 | //| E-mail: forevex@mail.ru | //+------------------------------------------------------------------+ #property copyright "paladin80" #property link "forevex@mail.ru" #property library //--------------------------------------------- iACfunc() - start ------------------------------------------------------------ //+----------------------------------------------------------------------------+ //| Input parameters: | //| Sy - Symbol. | //| Tf - Timeframe. | //| MA_mode - Applied MA method. | //| Applied_price - Applied price. | //| Period_1 , Period_2 , Period_3 - Periods for calculation of indicator | //| (see formulas below) | //| Shift - Index of the value taken from the indicator buffer. | //+----------------------------------------------------------------------------+----+ //| Formulas for calculation standard AC (http://codebase.mql4.com/247) | //| The function iACfunc() is calculated according formulas: | //| AO = MA_mode (Applied_price, Period_1) - MA_mode (Applied_price, Period_2) | //| AC = AO - MA_mode (AO, Period_3) | //+---------------------------------------------------------------------------------+ double iACfunc(string Sy,int Tf,int MA_mode,int Applied_price,int Period_1,int Period_2,int Period_3,int Shift) { double AOBuffer[], AC; if (Sy=="" || Sy=="0") Sy=Symbol(); int limit=MathMax(MathMax(Period_1,Period_2),Period_3)-1+Shift; ArrayResize(AOBuffer,limit); for (int i=0; i<=limit; i++) { AOBuffer[i]=iMA(Sy,Tf,Period_1,0,MA_mode,Applied_price,i)-iMA(Sy,Tf,Period_2,0,MA_mode,Applied_price,i); } ArraySetAsSeries(AOBuffer,true); AC=AOBuffer[Shift]-iMAOnArray(AOBuffer,0,Period_3,0,MA_mode,Shift); return(AC); } //--------------------------------------------- iACfunc() - end ------------------------------------------------------------