Download BatMA indicators

batmaWe found this BatMA on the interest and we didn’t shell out anything to have this remarkable indicator and so we believe it’s a free foreign currency trading indicator.

We’re amazed that this mq4 have worked perfectly with MT4 (Metatrader 4) and MT5 (Metatrader 5) edition soon after trying it. And more possibly, it could also work along with some other MT software.

Comments in connection with BatMA indicator will be most treasured. Comments and suggestions are published to the BatMA indicator comment section. Feedback and also recommendations concerning the trading will be very much helpful. The best indicator is going to be picked by currency traders with the help of your comments regarding the products.

Obviously, much better indicators that will help in trading much more the precise manner are what the majority of foreign currency investors want to have. This is where free BatMA indicator is necessary. It can help traders in doubling the profit that they can have in their web business. Assured, we are also carrying out all of our best to post Forex indicators such as BatMA on our site. With that said, it is possible for online marketers to download it without spending money making them to come up with smart decisions . As a result, they will turn out to be outstanding traders.

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

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//—- indicator parameters
extern int MA_Period=13;
extern int MA_Shift=0;
extern int MA_Method=1;
//—- indicator buffers
double ExtMapBuffer[], pr;
//—-
int ExtCountedBars=0;
//+——————————————————————+
//| Custom indicator initialization function |
//+——————————————————————+
int init()
{
int draw_begin;
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;
case 4 : short_name=”BatEMA(“; break;
default :
MA_Method=1;
short_name=”EMA(“;
}
IndicatorShortName(short_name+MA_Period+”)”);
SetIndexDrawBegin(0,draw_begin);
//—- indicator buffers mapping
SetIndexBuffer(0,ExtMapBuffer);
//—- initialization done
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(); break;
case 4 : pr=MathSqrt(2.0/(1.0+MA_Period));
BatMa(pr);

}

//—- 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),Y;
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;
}
//+——————————————————————+
//| Batterwort Moving Average |
//+——————————————————————+
void BatMa(double Kf)
{
double p=2.0/(MA_Period+1);
double p1,p2,p3;
int pos=Bars-2;
p1=Kf*Kf;
p2=2.0*(1-Kf);
p3=(1-Kf)*(1-Kf);
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]=p1*Close[pos]+p2*ExtMapBuffer[pos+1]-p3*ExtMapBuffer[pos+2];
pos–;
}
}
//+——————————————————————+

&nbsp;
<pre>[/php]

Click Here to Download

0 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 *