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

[amibroker] Re: The Reverse Engine Bollinger Bands Problem, IV



PureBytes Links

Trading Reference Links

Well, it is not a strict breakout definition, you may call it 
continuation also, since the trend began from the lower band.
You may equally know the BBandBot cross signal through the X2 line as 
described in the codes.
I prefer this period the trading idea i presented as an example, we 
are still in a bullish environment and the upper cross has a 
continuation indeed. Of course I can not wait for 8 days, 3 was 
better [for the last two months or so]
Anyway, it is a matter of style ...
Dimitris Tsokakis
--- In amibroker@xxxxxxxxxxxxxxx, "palsanand" <palsanand@xxxx> wrote:
> Hi,
> 
> I would characterize your definition of upper or lower breakout as 
a 
> continuation signal not a breakout.  
> 
> In my opinion an upper breakout always starts from the lower Bband 
> and a lower breakout always starts from the upper Bband.  The trick 
> there is to find that particular value of the Z-Score (+/-2)that 
will 
> detect the breakout or counter-trend pullback.  It is made much 
> easier by calculating a range of Z-Scores with different moving 
> averages (2-21) & performing a check on it using StochZ(50) & StochZ
> (200).
> 
> The Bollinger Bands are Standard Deviation Bands.  It's superiority 
> is in showing your investments volatility along with the likely 
> support and resistance areas (Z=0).  The extremes of the band (+/-2)
> are considered "unusual".  Every time you see an investment reach 
the 
> extremes, it is said to be at the "Bollinger Band".  However, it is 
> also a key turning point.  The price can be expected to be anywhere 
> within the 95% confidence band at any time.  The moment the 
> investment hits the extremes, it is now statistically significant 
and 
> something has caused this new valuation and it is time to search 
for 
> a signal using your favorite Entry/Exit Trading Signal Detection 
> system.
> 
> But, sometimes a breakout becomes a counter-trend pullback & vice-
> versa.  The trick there is to detect the volatility.  You may find 
> that the volatility characteristics are quite different for these 
two 
> types of market conditions.
> 
> Regards,
> 
> Pal
> --- In amibroker@xxxxxxxxxxxxxxx, "Dimitris Tsokakis" 
<TSOKAKIS@xxxx> 
> wrote:
> > Here is an application of the method.
> > Suppose we trade BBands and suppose we buy at the upper breakout 
> and sell some, say 8, days later.
> > The usual code would be, from 1/1/2003 till now
> > 
> > // Without the method
> > t=8;
> > Buy=Cross(C,bt);Buy=ExRemSpan(Buy,t);Sell=Ref(Buy,-t);
> > SetTradeDelays( 1, 1, 1, 1 ) ;
> > e2=Equity(1,3,1030101,1030924);
> > 
> > where bt is the BBandTop(C,n,f) upper Bollinger Band
> > Buy/Sell at Open with delay +1.
> > 
> > Now we know in advance the critical level X1 to have a BB 
breakout 
> tomorrow. 
> > We may use it as a BuyPrice and set Buy delay to 0.
> > The new system would be
> > 
> > // With the method
> > t=8;
> > Buy=Cross(C,bt);Buy=ExRemSpan(Buy,t);Sell=Ref(Buy,-t);BuyPrice=Ref
> (x1,-1);
> > SetTradeDelays( 0, 1, 1, 1 ) ;e1=Equity(1,3,1030101,1030924);
> > 
> > The att. gif gives an outline of the improvement.
> > Of course, nothing is free in this world, we have to decide, when 
> the price reach the critical level X1, that it will close higher !!
> > Explore the database for the n=1 last quotations with
> > 
> >  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);
> > 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)+" [ "+WriteVal(100*(-1+x2/C))+"% ] for a BBandBot Cross"+
> > "\n *above"+WriteVal(x1)+" ["+WriteVal(100*(-1+x1/C))+"% ] for a 
> BBandTop Cross"+
> > "\n  Actual Next Close = "+WriteIf(Cum(1)!=LastValue(Cum
> (1)),WriteVal(Ref(C,1)),"?");
> > t=8;
> > // With the method
> > Buy=Cross(C,bt);Buy=ExRemSpan(Buy,t);Sell=Ref(Buy,-t);
> > BuyPrice=Ref(x1,-1);
> > SetTradeDelays( 0, 1, 1, 1 ) ;
> > e1=Equity(1,3,1030101,1030924);
> > // Without the method
> > Buy=Cross(C,bt);Buy=ExRemSpan(Buy,t);Sell=Ref(Buy,-t);
> > SetTradeDelays( 1, 1, 1, 1 ) ;
> > e2=Equity(1,3,1030101,1030924);
> > Filter=e1>e2;
> > AddColumn(e2,"e Without");
> > AddColumn(e1,"e With");
> > AddColumn(100*(-1+e1/e2),"Profits % Increment");
> > 
> > to get an idea of probable applications.
> > Dimitris Tsokakis
> > 
> > 
> > 
> > 
> > 
> > ----- Original Message ----- 
> > From: Dimitris Tsokakis 
> > To: amibroker@xxxxxxxxxxxxxxx 
> > Sent: Tuesday, September 23, 2003 1:15 PM
> > Subject: Fw: The Reverse Engine Bollinger Bands Problem, III
> > 
> > 
> > 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);
> > }
> > 
> > In the attached gif you may see the fmax distribution for a group 
> of stocks [test period Jan2000 till now]
> > 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 ---------------------~-->
Buy Ink Cartridges or Refill Kits for your HP, Epson, Canon or Lexmark
Printer at MyInks.com. Free s/h on orders $50 or more to the US & Canada.
http://www.c1tracking.com/l.asp?cid=5511
http://us.click.yahoo.com/mOAaAA/3exGAA/qnsNAA/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/