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/
|