Download MovingAverages11 indicators

ma11All MT editions, fully trust this mql file, even with MT4 and Meta Trader 5 editions.

If you think MovingAverages11 as beneficial indicator for Forex, then you can rate the indicator and give several feedbacks and also opinions and post it to the comment area. We’ll be glad when you do that. In addition, you could help your fellow currency exchange traders to try such indicators with your comments, ratings, and reviews.

We, the currency exchange traders are continually seeking greater indicators for a more accurate trade. And we are expecting that you will be helped by this MovingAverages11 indicator in finding a more accurate trade or even having better choices for trade and also earn better earnings. We are trying our best to find other forex trading indicators similar to MovingAverages11 and upload them on our site so that people can download them free of charge and make greater traders.

[php]</pre>
//+——————————————————————+
//| Custom Moving Average.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+——————————————————————+
#property copyright “Copyright © 2004, MetaQuotes Software Corp.”
#property link “http://www.metaquotes.net/”

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 DarkViolet
//—- indicator parameters
extern string note1 = “Moving Average”;
extern int MA_Period=5;
extern int MA_Shift=0;
extern string note2 = “0=Simple,1=Exponential”;
extern string note3 = “2=Smooth,3=Linear Weighted”;
extern int MA_Method=1;
extern string note4 = “change color in the Colors area too”;
extern color MAcolor1 = DarkViolet;
extern string note5 = “Display the info in what corner?”;
extern string note6 = “Upper left=0; Upper right=1”;
extern string note7 = “Lower left=2; Lower right=3”;
extern int WhatCorner=1;
extern string note8 = “Y distance; add 10 to each MA”;
extern int ydistance1=10;

double ExtMapBuffer[];
string objectma1;
int ExtCountedBars=0;
//+——————————————————————+
//| |
//+——————————————————————+
string IntToStr(int X)
{
return (DoubleToStr(X, 0));
}
//+——————————————————————+
//| Custom indicator initialization function |
//+——————————————————————+
int init()
{
int draw_begin, ydistance2;
string short_name;
//—- drawing settings
SetIndexStyle(0,DRAW_LINE);
SetIndexShift(0,MA_Shift);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
if(MA_Period<2) MA_Period=13;
draw_begin=MA_Period-1;
//—- indicator short name
switch(MA_Method)
{
case 1 : short_name=”EMA”; draw_begin=0; break;
case 2 : short_name=”SMMA”; break;
case 3 : short_name=”LWMA”; break;
default :
MA_Method=0;
short_name=”SMA”;
}
IndicatorShortName(short_name+MA_Period+”)”);
SetIndexDrawBegin(0,draw_begin);
//—- indicator buffers mapping
SetIndexBuffer(0,ExtMapBuffer);
//—- initialization done
if ((WhatCorner == 2) || (WhatCorner == 3))
{
ydistance2 = 50+ydistance1;
}
else
{
ydistance1 = 20+ydistance1;
}
objectma1 = “banzaiMA”+IntToStr(MA_Period);
ObjectCreate(objectma1, OBJ_LABEL, 0, 0, 0);
ObjectSetText(objectma1, short_name+”(“+MA_Period+”)”, 8, “Arial”, MAcolor1);
ObjectSet(objectma1, OBJPROP_CORNER, WhatCorner);
ObjectSet(objectma1, OBJPROP_XDISTANCE, 2);
ObjectSet(objectma1, OBJPROP_YDISTANCE, ydistance1);
return(0);
}
//+——————————————————————+
//| |
//+——————————————————————+
int deinit()
{
ObjectDelete(objectma1);
return(0);
}
//+——————————————————————+
int start()
{
if(Bars<=MA_Period) return(0);
ExtCountedBars=IndicatorCounted();
//—- check for possible errors
if (ExtCountedBars<0) return(-1);
//—- last counted bar will be recounted
if (ExtCountedBars>0) ExtCountedBars–;
//—-
switch(MA_Method)
{
case 0 : sma(); break;
case 1 : ema(); break;
case 2 : smma(); break;
case 3 : lwma();
}
//—- done
return(0);
}
//+——————————————————————+
//| Simple Moving Average |
//+——————————————————————+
void sma()
{
double sum=0;
int i,pos=Bars-ExtCountedBars-1;
//—- initial accumulation
if(pos<MA_Period) pos=MA_Period;
for(i=1;i<MA_Period;i++,pos–)
sum+=Close[pos];
//—- main calculation loop
while(pos>=0)
{
sum+=Close[pos];
ExtMapBuffer[pos]=sum/MA_Period;
sum-=Close[pos+MA_Period-1];
pos–;
}
//—- zero initial bars
if(ExtCountedBars<1)
for(i=1;i<MA_Period;i++) ExtMapBuffer[Bars-i]=0;
}
//+——————————————————————+
//| Exponential Moving Average |
//+——————————————————————+
void ema()
{
double pr=2.0/(MA_Period+1);
int pos=Bars-2;
if(ExtCountedBars>2) pos=Bars-ExtCountedBars-1;
//—- main calculation loop
while(pos>=0)
{
if(pos==Bars-2) ExtMapBuffer[pos+1]=Close[pos+1];
ExtMapBuffer[pos]=Close[pos]*pr+ExtMapBuffer[pos+1]*(1-pr);
pos–;
}
}
//+——————————————————————+
//| Smoothed Moving Average |
//+——————————————————————+
void smma()
{
double sum=0;
int i,k,pos=Bars-ExtCountedBars+1;
//—- main calculation loop
pos=Bars-MA_Period;
if(pos>Bars-ExtCountedBars) pos=Bars-ExtCountedBars;
while(pos>=0)
{
if(pos==Bars-MA_Period)
{
//—- initial accumulation
for(i=0,k=pos;i<MA_Period;i++,k++)
{
sum+=Close[k];
//—- zero initial bars
ExtMapBuffer[k]=0;
}
}
else sum=ExtMapBuffer[pos+1]*(MA_Period-1)+Close[pos];
ExtMapBuffer[pos]=sum/MA_Period;
pos–;
}
}
//+——————————————————————+
//| Linear Weighted Moving Average |
//+——————————————————————+
void lwma()
{
double sum=0.0,lsum=0.0;
double price;
int i,weight=0,pos=Bars-ExtCountedBars-1;
//—- initial accumulation
if(pos<MA_Period) pos=MA_Period;
for(i=1;i<=MA_Period;i++,pos–)
{
price=Close[pos];
sum+=price*i;
lsum+=price;
weight+=i;
}
//—- main calculation loop
pos++;
i=pos+MA_Period;
while(pos>=0)
{
ExtMapBuffer[pos]=sum/weight;
if(pos==0) break;
pos–;
i–;
price=Close[pos];
sum=sum-lsum+price*MA_Period;
lsum-=Close[i];
lsum+=price;
}
//—- zero initial bars
if(ExtCountedBars<1)
for(i=1;i<MA_Period;i++) ExtMapBuffer[Bars-i]=0;
}
//+——————————————————————+

&nbsp;
<pre>[/php]

Click Here to Download

2 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *