So what makes these better bollinger bands better than standard?  They look 
"tighter" to me, but I have not done any comparative studies.
 
Anyone?

  _____  

From: [email protected] [mailto:[email protected]] On Behalf Of 
Tomasz Janeczko
Sent: Sunday, February 15, 2009 3:53 AM
To: [email protected]
Subject: Re: [amibroker] Better Bollinger Bands


 
Hello,
 
Replace lines like that:
 
mt = alpha*C+(1-alpha)*(if(Cum(1)<pds,C,PREV));
 
with AFL equivalent (simpler):
 
mt = AMA( C, alpha );
 
Any other statement involving PREV the same way.
 
Final result:
 
pds=Param("Periods",20,2,200); 
sd=Param("Standard Deviations",2, 0.01,10); 
alpha=2/(pds+1); 
mt=AMA( C, alpha ); 
ut=AMA( mt, alpha ); 
dt=((2-alpha)*mt-ut)/(1-alpha); 
mt2=AMA(abs(C-dt), alpha ); 
ut2=AMA(mt2,alpha ); 
dt2=((2-alpha)*mt2-ut2)/(1-alpha); 
but=dt+sd*dt2; 
blt=dt-sd*dt2; 

Plot( C, "Price", colorBlack, styleCandle ); 
Plot( but, "Upper band", colorRed ); 
Plot( blt, "Lower band", colorRed ); 

 

Best regards,
Tomasz Janeczko
amibroker.com

----- Original Message ----- 
From: [email protected] 
To: [email protected] 
Cc: [email protected] ; [email protected] 
Sent: Sunday, February 15, 2009 3:37 AM
Subject: [amibroker] Better Bollinger Bands

Someone was asking for this afl. I got around to translating. Enjoy.


Now, if only someone can teach me , really how to make money !!!


/*
Better Bollinger Bands I


pds:=Input("Periods",2,200,20);
sd:=Input("Standard Deviations",.01,10,2);
alpha:=2/(pds+1);
mt:=alpha*C+(1-alpha)*(if(Cum(1)<pds,C,PREV));
ut:=alpha*mt+(1-alpha)*(if(Cum(1)<pds,C,PREV));
dt:=((2-alpha)*mt-ut)/(1-alpha);
mt2:=alpha*abs(C-dt)+(1-alpha)*PREV;
ut2:=alpha*mt2+(1-alpha)*PREV;
dt2:=((2-alpha)*mt2-ut2)/(1-alpha);
but:=dt+sd*dt2;
blt:=dt-sd*dt2;
dt;
but;
blt


//------------  easy language -----------


inputs:
lookback(20),
mult(2);


vars:
alpha(0),
mt(0),
ut(0),
dt(0),
mt2(0),
ut2(0),
dt2(0),
but(0),
blt(0);


alpha = 2 / (lookback + 1);
mt = alpha * close + (1 - alpha) * mt;
ut = alpha * mt + (1 - alpha) * ut;
dt = ((2 - alpha) * mt - ut) / (1 - alpha);
mt2 = alpha * absvalue(close - dt) + (1 - alpha) * mt2;
ut2 = alpha * mt2 + (1 - alpha) * ut2;
dt2 = ((2 - alpha) * mt2 - ut2) / (1 - alpha);
but = dt + mult * dt2;
blt = dt - mult * dt2;
plot1(dt,"CenterB");
plot2(but,"UpperB");
plot3(blt,"LowerB");
*/


_SECTION_BEGIN("Better Bollinger Bands");
pds = Param("Periods",2,1,200,1);
SD = Param("sd",3,0.01,5,0.01);
ALPHA = 2/(PDS+1);
mt = AMA(C, alpha);
ut = AMA(mt, alpha);
dt = ((2 - alpha) * mt - ut) / (1 - alpha);
//mt2 = alpha * absvalue(Close - dt) + (1 - alpha) * mt2;
mt2 = AMA(abs(C - dt), alpha);


ut2 = AMA( mt2 , alpha) ;
dt2 = ((2 - alpha) * mt2 - ut2) / (1 - alpha);


but = dt + sd * dt2;
blt = dt - sd * dt2;


Plot(but,"Upper Band", colorRed, styleLine);
Plot(dt,"Cente Band", colorBlue, styleLine);
Plot(blt,"Lower Band", colorBrightGreen, styleLine);


_SECTION_END();








Reply via email to