[MT4指标]DECEMA指标
主图指标
DECEMA指标
mt4指标类型:趋势指标
是否能用在mt4手机版上:否
是否含有未来函数:无
//Version: 1
//Time: December 03, 2006
//+------------------------------------------------------------------+
//| DECEMA |
//| DECEMA.mq4 |
//| Developed by Coders Guru |
//| http://www.xpworx.com |
//|
//| Revised by IgorAD,[email protected] |
//| http://www.forex-tsd.com/ |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#property link \"http://www.xpworx.com\"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
extern int MA_Period = 15;
extern int MA_Price = PRICE_CLOSE;
double DrawEMA;
double EMA1, EMA2, EMA3, EMA4, EMA5, EMA6, EMA7, EMA8, EMA9, EMA10;
int time2;
double bEMA1, bEMA2, bEMA3, bEMA4, bEMA5, bEMA6, bEMA7, bEMA8, bEMA9, bEMA10;
double alfa;
int init()
{
SetIndexStyle(0,DRAW_LINE, STYLE_SOLID,2);
SetIndexBuffer(0,DrawEMA);
string short_name=\"DECEMA(\"+MA_Period+\")\";
IndicatorShortName(short_name);
SetIndexDrawBegin(0,10*MA_Period);
alfa = 2.0/(1.0+MA_Period);
return(0);
}
int deinit()
{
return(0);
}
void start()
{
int limit,MaxBar;
int counted_bars=IndicatorCounted();
if(Bars-1 < MA_Period)return(0);
if (counted_bars<0) return(-1);
if (counted_bars>0) counted_bars--;
MaxBar=Bars-1-MA_Period;
limit =Bars-counted_bars-1;
if (limit>MaxBar)
{
for (int shift=limit;shift>=MaxBar;shift--)
DrawEMA[Bars-shift]=0.0;
limit=MaxBar;
}
int Tnew=Time[limit+1];
if (limittime2)Print(\"Error1\");
else Print(\"Error2\");
return(-1);
}
for(shift=limit; shift>=0; shift--)
{
if(shift == 1)
if(((limit == 1)&&(time2 != Time[2])) || (limit > 1))
{
time2 = Time[2];
bEMA1=EMA1;
bEMA2=EMA2;
bEMA3=EMA3;
bEMA4=EMA4;
bEMA5=EMA5;
bEMA6=EMA6;
bEMA7=EMA7;
bEMA8=EMA8;
bEMA9=EMA9;
bEMA10=EMA10;
}
EMA1 = alfa*iMA(NULL,0,1,0,MODE_SMA,MA_Price,shift) + (1-alfa)*EMA1;
EMA2 = alfa*EMA1 + (1-alfa)*EMA2;
EMA3 = alfa*EMA2 + (1-alfa)*EMA3;
EMA4 = alfa*EMA3 + (1-alfa)*EMA4;
EMA5 = alfa*EMA4 + (1-alfa)*EMA5;
EMA6 = alfa*EMA5 + (1-alfa)*EMA6;
EMA7 = alfa*EMA6 + (1-alfa)*EMA7;
EMA8 = alfa*EMA7 + (1-alfa)*EMA8;
EMA9 = alfa*EMA8 + (1-alfa)*EMA9;
EMA10= alfa*EMA9 + (1-alfa)*EMA10;
DrawEMA[shift] = 10*EMA1-45*EMA2+120*EMA3-210*EMA4+252*EMA5-210*EMA6+120*EMA7-45*EMA8+10*EMA9-EMA10;
}
return(0);
}