[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

Hi,

I can envision some problems with this Bollinger Breakout system.  

1)  It is extremely diffcult for one to make a determination of the 
direction of the market based on volatility (HVR, BandWidth etc.,)
alone without a good Entry/Exit Trading signal Detection System.  
Hence you may have to straddle the market.

2)  Suppose you go long above the upper band and you place a sell 
stop below the lower band (straddle) and vice-versa and you get 
filled on both sides....

You may get away with this system by placing your stop not just 
above/below the bands but at for e.g., at Gann's support and 
resistance points, because these points once they are breached 
reverse their function (support becomes resistance and resistance 
becomes support).

I would be interested in knowing more about this system....

Thanks.

Regards,

Pal





--- In amibroker@xxxxxxxxxxxxxxx, "Al Venosa" <advenosa@xxxx> wrote:
> Pal,
> 
> There is a trading system used by some traders called the Bollinger 
Breakout System. It is similar to what DT has proposed. You buy when 
the upper band is exceeded plus a small additional amount (opposite 
for shorting). However, the standard deviation bands are much smaller 
than the usual +/- 2. Usually, they are around +/- 0.4 or so. So, the 
bands are quite a bit narrower and are used as breakout bands rather 
than the usual rebound bands or support/resistance levels where one 
sells at the top of the upper band and buys at the bottom of the 
lower band. Just a different way of looking at things. It's a 
volatility breakout system of sorts. By the way, the exit is the 
opposite of the entry: sell at the breakout from the lower band (if 
long originally). 
> 
> AV
>   ----- Original Message ----- 
>   From: palsanand 
>   To: amibroker@xxxxxxxxxxxxxxx 
>   Sent: Wednesday, September 24, 2003 1:03 PM
>   Subject: [amibroker] Re: The Reverse Engine Bollinger Bands 
Problem, IV
> 
> 
>   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 
>               ADVERTISEMENT
>              
>        
>        
> 
> 
>   Send BUG REPORTS to bugs@xxxx
>   Send SUGGESTIONS to suggest@xxxx
>   -----------------------------------------
>   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 the Yahoo! Terms of 
Service. 
> 
> 
>   ---
>   Outgoing mail is certified Virus Free.
>   Checked by AVG anti-virus system (http://www.grisoft.com).
>   Version: 6.0.520 / Virus Database: 318 - Release Date: 9/18/2003


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