[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] The Reverse Engine Bollinger Bands Problem, III



PureBytes Links

Trading Reference Links

If you expect a BBandBot(C,10,3) to cross CSCO Close, perhaps you 
should wait for long. 
This type of cross never occurred the last 45 months !!
There are some resctrictions in BBandbot(C,n,f) parameters. 
A. f upper limit
For a given n, the values of f are limited.
This limit is not universal, it varies from stock to stock.
In AA window, explore the current stock for the last n=1 bars with
 
// f upper limit for a given n
// Explore ONLY current stock, n=1 last quotations
SetOption ("NoDefaultColumns" ,True);
AddTextColumn(Name(),"Name");
n=10;
for(f=1.5;f<=3;f=f+0.1)
{
b=BBandBot(C,n,f);
x=Cross(b,C);y=LastValue(Cum(x));
if(y>0)
{AddColumn(y,"f="+WriteVal(f,1.1),1.0);}
}
Filter=1;
 
You may see the # of Cross(b,C) per f value. the last column gives 
the upper limit of f for a given n.
For the database it is better to use the code
 
// f upper limit for a given n
// Explore the database for the n=1 last quotations
SetOption ("NoDefaultColumns" ,True);
AddTextColumn(Name(),"Name");
n=10;
for(f=1.5;f<=3;f=f+0.1)
{
b=BBandBot(C,n,f);
x=Cross(b,C);y=LastValue(Cum(x));
AddColumn(y,"f="+WriteVal(f,1.1),1.0);
}
Filter=1;
 
For the N100 database no stock exceeded f=3 since Jan2000.
 
B. n lower limit
For a given f there is a lower limit for n, also variable from stock 
to stock.
 
// n lower limit for a given f
// Explore the database for the n=1 last quotations
 SetOption ("NoDefaultColumns" ,True);
AddTextColumn(Name(),"Name");
f=2.5;
for(n=3;n<20;n=n+1)
{
b=BBandBot(C,n,f);
x=Cross(b,C);y=LastValue(Cum(x));
AddColumn(y,"n="+WriteVal(n,1.0),1.0);
}
Filter=1;
 
You will see that n should be greater than n=8 for a probable Cross
(b,C)
 
C. fmax for various n
For your BBandBot parameters selection you should know the fmax for 
various n.
// fmax for various n
SetOption ("NoDefaultColumns" ,True);
AddTextColumn(Name(),"Name");
for(n=10;n<210;n=n+10)
{
for(f=1.5;f<=5;f=f+0.1)
{
b=BBandBot(C,n,f);
x=Cross(b,C);y=LastValue(Cum(x));
if(y>0)
{fmax=f;}
}
Filter=1;// explore for the n=1 last quotations.
AddColumn(fmax,"n="+WriteVal(n,1.0),1.1);
}
 
It is better to know the mutual f,n limitations before using the 
Reverse Engine BBands mechanism.
Dimitris Tsokakis

 
----- Original Message ----- 
From: Dimitris Tsokakis 
To: amibroker@xxxxxxxxxxxxxxx 
Sent: Monday, September 22, 2003 1:53 PM
Subject: The Reverse Engine Bollinger Bands Problem, II


Here is the complete IB formula for BBandTop, BBandbot.
 
// Anticipating the next bar BBandBot or BBandTop cross, by D. 
Tsokakis, Sept 2003
n=20; f=2;
Qn=Sum(C^2,n);Qn_1=Sum(C^2,n-1);
Sn=Sum(C,n);Sn_1=Sum(C,n-1);
Mn=Sn/n;Mn_1=Sn_1/(n-1);
Kn=(1/n)*sqrt(n*Qn-Sn^2);Kn_1=(1/(n-1))*sqrt((n-1)*Qn_1-Sn_1^2);
bb=Mn-f*Kn;bt=Mn+f*Kn;
S=Sn_1;Q=Qn_1;
A2=(n-1)*(f^2-n+1);
A1=-2*(f^2+1-n)*S;
A0=f^2*n*Q-f^2*S^2-S^2;
x1=(-A1-sqrt(A1^2-4*A2*A0))/(2*A2);
x2=(-A1+sqrt(A1^2-4*A2*A0))/(2*A2);
Plot(C,"C",1,8);
Plot(X1,"",colorBlue,1);
Plot(X2,"",colorBlue,1);Plot(bb,"BBandBot",7,1);Plot
(bt,"BBandTop",7,1);
PlotShapes(shapeDownTriangle*Cross(x2,Ref(C,1)),colorPink);
PlotShapes(shapeDownArrow*(Cross(bb,C)),colorRed);
PlotShapes(shapeUpTriangle*Cross(Ref(C,1),x1),colorAqua);
PlotShapes(shapeUpArrow*(Cross(C,bt)),colorBrightGreen);
Title="The next "+Name()+" Close should be "+"\n *below"+WriteVal(x2)
+" for a BBandBot Cross"+
"\n *above"+WriteVal(x1)+" for a BBandTop Cross"+
"\n  Actual Next Close = "+WriteIf(Cum(1)!=LastValue(Cum(1)),WriteVal
(Ref(C,1)),"?");
 
The formula gives quite accurate results. Sometimes it is useful.
At point Z1, the price should be below 13.845 and the next bar close 
was 13.840.
At point Z2, the price should be above 20.840 and the next bar close 
was 20.850.  
>From the mathematical point of view, both crosses come from the same 
2nd degree equation A2*X^2+A1*X+A0=0
Dimitris Tsokakis
[to be continued]
 
----- Original Message ----- 
From: Dimitris Tsokakis 
To: amibroker@xxxxxxxxxxxxxxx 
Sent: Monday, September 22, 2003 11:26 AM
Subject: The Reverse Engine Bollinger Bands Problem


What is the necessary next bar Close to see prices below the next bar 
BBandbot ?
Steve Karnish is responsible for the question [and the ...headache], 
some time ago.
The following code is dedicated to him.
Paste in IB the
 
// Anticipating the next bar BBandbot cross, by D. Tsokakis, Sept 2003
n=10; 
f=2;
Qn=Sum(C^2,n);Qn_1=Sum(C^2,n-1);
Sn=Sum(C,n);Sn_1=Sum(C,n-1);
Mn=Sn/n;Mn_1=Sn_1/(n-1);
Kn=(1/n)*sqrt(n*Qn-Sn^2);Kn_1=(1/(n-1))*sqrt((n-1)*Qn_1-Sn_1^2);
b=Mn-f*Kn;
S=Sn_1;Q=Qn_1;
A2=(n-1)*(f^2-n+1);
A1=-2*(f^2+1-n)*S;
A0=f^2*n*Q-f^2*S^2-S^2;
x2=(-A1+sqrt(A1^2-4*A2*A0))/(2*A2);
Plot(X2,"",colorBlue,1);Plot(C,"C",1,8);Plot(b,"BBandBot",7,1);
PlotShapes(shapeUpArrow*Cross(x2,Ref(C,1)),colorWhite);
PlotShapes(shapeDownArrow*(Cross(b,C)),colorRed);
Title="The next "+Name()+" Close should be <="+WriteVal(x2)+
"\nActual Next Close = "+WriteIf(Cum(1)!=LastValue(Cum(1)),WriteVal
(Ref(C,1)),"?");
 
The solution is the X2 array.
For visual verification, a white arrow is plotted when the X2 crosses 
the next bar close and a red arrow points the actual cross.
 
Dimitris Tsokakis
[to be continued]
 



------------------------ Yahoo! Groups Sponsor ---------------------~-->
Special Sale: 50% off ReplayTV
Easily record your favorite shows!
CNet Ranked #1 over Tivo!
http://us.click.yahoo.com/WUMW7B/85qGAA/ySSFAA/GHeqlB/TM
---------------------------------------------------------------------~->

Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/