//+------------------------------------------------------------------+
//| 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 ------------------------------------------------------------
Comments