So is there anyone who could help with this issue?
Obviously, an alternative solution is to use open prices for Bollinger Bands 
instead of Closing, but that's not a perfect answer...


--- In [email protected], "mbausys" <mbau...@...> wrote:
>
> Hi all,
> 
> I'll try to clarify a couple of points:
> 1. The general idea is to trade Bollinger Bands. For simplicity, let take 
> only long side. I would enter a trade intraday if the price drops below nine 
> day bottom Bollinger Band ( BBandBot( C, 9, 2 ) ).
> 
> 2. My purpose is to backtest this simple trading system. The problem is that 
> I can't set buy condition as
> Buy = L < BBandBot( C, 9, 2 )
> because the band moves intraday and the actual signal might have not occurred 
> intraday although it would be generated by this trading rule. For instance, 
> if the EOD low only touches EOD BBandBot( C, 9, 2), then it means that when 
> the price was at low intraday, the band was definitely lower and I wouldn't 
> have got a trading signal and hence wouldn't have entered the trade.
> 
> 3. In order to solve this problem, I need to find a price level at which the 
> signal would actually be generated intraday. Then that level would be used as 
> Buyprice. I've worked on this issue and come up with a solution, which works 
> fine, however it's extremely slow and there should definitely be a way for 
> simplifying this.
> 
> P = C; // P = my target price level
> BBB = BBandBot( P, 9, 2 );
> MAV = MA( P, 9 ); // MAV just stand for moving average
> for( i = 8; i < BarCount; i++ )
> {
>               Lo = L[i];
>               Hi = H[i];
>               if( P[i] > BBB[i] )
>               {
>                       do
>                       {
>                       P[i] = P[i] - 0.01;
>                       MAV[i] = ( P[i] + C[i-1] + C[i-2] + C[i-3] + C[i-4] + 
> C[i-5] + C[i-6] + C[i-7] + C[i-8] ) / 9;
>                       Var[i] = ( ( P[i] - MAV[i] )^2 + ( C[i-1] - MAV[i] )^2 
> + ( C[i-2] - MAV[i] )^2 + ( C[i-3] - MAV[i] )^2 + ( C[i-4] - MAV[i] )^2
>                       + ( C[i-5] - MAV[i] )^2 + ( C[i-6]  - MAV[i] )^2 + ( 
> C[i-7]  - MAV[i] )^2 + ( C[i-8] - MAV[i] )^2 ) / 9;
>                       STD[i] = sqrt( Var[i] );
>                       BBB[i] = MAV[i] - 2 * STD[i];
>                       }
>                       while ( P[i] > BBB[i] AND Lo[i] < P[i] );
>               }
>               else
>               {
>                       do
>                       {
>                       P[i] = P[i] + 0.01;
>                       MAV[i] = ( P[i] + C[i-1] + C[i-2] + C[i-3] + C[i-4] + 
> C[i-5] + C[i-6] + C[i-7] + C[i-8] ) / 9;
>                       Var[i] = ( ( P[i] - MAV[i] )^2 + ( C[i-1] - MAV[i] )^2 
> + ( C[i-2] - MAV[i] )^2 + ( C[i-3] - MAV[i] )^2 + ( C[i-4] - MAV[i] )^2
>                       + ( C[i-5] - MAV[i] )^2 + ( C[i-6]  - MAV[i] )^2 + ( 
> C[i-7]  - MAV[i] )^2 + ( C[i-8] - MAV[i] )^2 ) / 9;
>                       STD[i] = sqrt( Var[i] );
>                       BBB[i] = MAV[i] - 2 * STD[i];
>                       }
>                       while ( P[i] < BBB[i] AND Hi[i] > P[i] );
>               }
> }
> 
> This procedure find the needed price level but it takes ages to complete a 
> backtest procedure. I would greatly appreciate if someone could help me to 
> simplify the process and make it more efficient. Thanks a lot!
> 
> 
> Regards,
> 
> Marius
> 
> 
> --- In [email protected], "Steve Dugas" <sjdugas@> wrote:
> >
> > Hi - AB allows you to define BuyPrice, SellPrice, etc.  So if you have your 
> > signals defined as price crossing BB, couldn't you just say
> > 
> > BuyPrice = BBandTop() or whatever?
> > 
> > Steve
> > 
> > ----- Original Message ----- 
> > From: "mbausys" <mbausys@>
> > To: <[email protected]>
> > Sent: Friday, February 12, 2010 7:13 AM
> > Subject: [amibroker] Re: Projecting prices
> > 
> > 
> > > Steve,
> > >
> > > What I want to do with this code is for it to allow me enter a trade 
> > > exactly at the price which triggers a signal. In particular, I use 
> > > Bollinger Bands and want trades to be executed at the price at which it 
> > > equals Bollinger Bands. The price might then reverse and in EOD chart the 
> > > closing price would be inside Bollinger Bands. However, I would know that 
> > > the signal would have been generated intraday and I could have entered a 
> > > position. I'm not proficient with Amibroker coding yet so the required 
> > > twist might be very simple. Thank you for your help.
> > >
> > >
> > > Marius
> > >
> > > --- In [email protected], "Steve Dugas" <sjdugas@> wrote:
> > >
> > >
> > >>
> > >> Hi - What did you have in mind?  Fred can correct me if I'm wrong, but I
> > >> always imagined it was written for someone who wanted to trade at the 
> > >> close
> > >> but only gets EOD data. By the time you do the nightly data download and 
> > >> see
> > >> a new signal, the markets are closed and you can only trade NDO. With 
> > >> this
> > >> code you can predict the price needed to trigger a signal, then put on 
> > >> CNBC
> > >> or QuoteTracker to see if your price point has been met and trade just 
> > >> prior
> > >> to today's close. For backtests, just set trade price to close and trade
> > >> delay to zero, you should only need to predict the price for real-time
> > >> trading.
> > >>
> > >> Steve
> > >>
> > >> ----- Original Message ----- 
> > >> From: "mbausys" <mbausys@>
> > >> To: <[email protected]>
> > >> Sent: Thursday, February 11, 2010 4:10 PM
> > >> Subject: [amibroker] Re: Projecting prices
> > >>
> > >>
> > >> >
> > >> >
> > >> > Thanks a lot for posting this. I'd like to ask how it would be 
> > >> > possible 
> > >> > to
> > >> > use this process in a backtest procedure as it only determines a 
> > >> > required
> > >> > price for tomorrow. Please correct me if I'm wrong.
> > >> >
> > >> >
> > >> > Regards,
> > >> >
> > >> > Marius
> > >> >
> > >> >
> > >> > --- In [email protected], "Ara Kaloustian" <ara1@> wrote:
> > >> >>
> > >> >> Thanks Steve
> > >> >>
> > >> >> A
> > >> >>   ----- Original Message ----- 
> > >> >>   From: Steve Dugas
> > >> >>   To: [email protected]
> > >> >>   Sent: Monday, April 10, 2006 10:53 AM
> > >> >>   Subject: Re: [amibroker] Projecting prices
> > >> >>
> > >> >>
> > >> >>   Hi Ara,
> > >> >>
> > >> >>   Your question rang a bell with me, so I searched my saved e-mails 
> > >> >> and
> > >> >> found this code that Fred was kind enough to post a couple of years 
> > >> >> ago.
> > >> >> Maybe it will be helpful for you?
> > >> >>
> > >> >>   Steve
> > >> >>
> > >> >>   // ***********************************************
> > >> >>   //
> > >> >>   // An all purpose routine to find the price
> > >> >>   // necessary to move an indicator to a GOAL.
> > >> >>   //
> > >> >>   // This should work for virtually any indicator,
> > >> >>   // built in or otherwise.  It's demonstrated
> > >> >>   // here using RSI & BBand's ...
> > >> >>   //
> > >> >>   // Note: It will appear to use future quotes
> > >> >>   // because of the down shifting of the
> > >> >>   // price array, but obviously it can't
> > >> >>   // "know" tomorrows price.  There's
> > >> >>   // probably a way to rectify this but
> > >> >>   // I was more concerned with the rest
> > >> >>   // of the process.
> > >> >>   //
> > >> >>   // The maximum iterations have arbitrarily been
> > >> >>   // set to 200 which is undoubtedly overkill
> > >> >>   // as I've yet to see anything take 200 even
> > >> >>   // when tolerance was set to 0 on datastreams
> > >> >>   // with very high prices.
> > >> >>   //
> > >> >>   // For real usage the saving of i in j and the
> > >> >>   // accuracy calculation can be tossed as they
> > >> >>   // were only put in for demonstration purposes
> > >> >>   //
> > >> >>   // ***********************************************
> > >> >>   //
> > >> >>   // This Routine requires the following things
> > >> >>   //
> > >> >>   // P0 = A price array or synthetic
> > >> >>   //
> > >> >>   // Goal = The goal value of the indicator
> > >> >>   //
> > >> >>   // Acc = An accuracy level for the calculations
> > >> >>   //
> > >> >>   //   Set this to the order of magnitude
> > >> >>   //   that you want.  For example if you want
> > >> >>   //   accuracy in calculated price to within
> > >> >>   //   0.01 then set it 0.01.  It can even
> > >> >>   //   be set to 0 which will force AB to
> > >> >>   //   calculate until it can't find any
> > >> >>   //   further improvements (Usually between
> > >> >>   //   150-170 iterations) but this is semi
> > >> >>   //   useless as improvements relative to
> > >> >>   //   price granularity have long since
> > >> >>   //   been gone by.
> > >> >>   //
> > >> >>   //   The lower you set it the longer it
> > >> >>   //   will take but it's pretty quick
> > >> >>   //   (Usually between 15-30 iterations)
> > >> >>   //   unless you set it at 0.
> > >> >>   //
> > >> >>   // ***********************************************
> > >> >>   //
> > >> >>   // Note: Some goals are virtually unattainable on
> > >> >>   // the next bar, especially on the downside
> > >> >>   // as they would require a negative price
> > >> >>   // which is what this routine will show if
> > >> >>   // that is what is required.
> > >> >>   //
> > >> >>   // ***********************************************
> > >> >>
> > >> >>   P0   = C;
> > >> >>
> > >> >>   Acc  = 0.0001;
> > >> >>
> > >> >>   LVBI = LastValue(BarIndex());
> > >> >>   Mult = 1;
> > >> >>
> > >> >>   // ***********************************************
> > >> >>   // Shift Price up by n orders of magnitude to make
> > >> >>   // it >= 1.  This is useful to increase
> > >> >>   // accuracy on very low priced datastreams
> > >> >>   // such as the JY.
> > >> >>   // ***********************************************
> > >> >>   for (i = 0; i < 10; i++)
> > >> >>   {
> > >> >>   if (P0[LVBI] >= 1)
> > >> >>   i = 99;
> > >> >>   else
> > >> >>   Mult = Mult * 10;
> > >> >>   }
> > >> >>   // ***********************************************
> > >> >>
> > >> >>   P1   = Ref(P0, 1) * Mult;
> > >> >>   UpDn = 100 * P1[LVBI];
> > >> >>
> > >> >>   for (i = 0; i < 200; i++)
> > >> >>   {
> > >> >>
> > >> >>   // An example for finding price associated with the next bars
> > >> >>   BBandTop
> > >> >>   //
> > >> >>   //
> > >> >>   **************************************************************
> > >> >>   ***************
> > >> >>   // Put whatever indicator you want to goal seek here based on P1
> > >> >>   //
> > >> >>   **************************************************************
> > >> >>   ***************
> > >> >>   Calc = P1;
> > >> >>   //
> > >> >>   **************************************************************
> > >> >>   ***************
> > >> >>   // Put whatever you want for the goal here ...
> > >> >>   //
> > >> >>   // The reason for putting it in the loop is because sometimes
> > >> >>   the goal is price
> > >> >>   // oriented and will need to be recalculated on each
> > >> >>   iteration.
> > >> >>   //
> > >> >>   **************************************************************
> > >> >>   ***************
> > >> >>   Goal = LastValue(BBandBot(P1, 14, 2));
> > >> >>   //
> > >> >>   **************************************************************
> > >> >>   ***************
> > >> >>
> > >> >>
> > >> >>
> > >> >>   // An example for finding price associated with the next bars
> > >> >>   RSI value of 65
> > >> >>   //
> > >> >>   //
> > >> >>   **************************************************************
> > >> >>   ***************
> > >> >>   // Put whatever indicator you want to goal seek here based on P1
> > >> >>   //
> > >> >>   **************************************************************
> > >> >>   ***************
> > >> >>   // Calc = RSIa(P1, 14);
> > >> >>   //
> > >> >>   **************************************************************
> > >> >>   ***************
> > >> >>   // Put whatever you want for the goal here ...
> > >> >>   //
> > >> >>   // The reason for putting it in the loop is because sometimes
> > >> >>   the goal is price
> > >> >>   // oriented and will need to be recalculated on each
> > >> >>   iteration.
> > >> >>   //
> > >> >>   **************************************************************
> > >> >>   ***************
> > >> >>   // Goal = 65;
> > >> >>   //
> > >> >>   **************************************************************
> > >> >>   ***************
> > >> >>
> > >> >>   if (Calc[LVBI] < Goal)
> > >> >>   P1[LVBI] = P1[LVBI] + UpDn;
> > >> >>   else
> > >> >>   P1[LVBI] = P1[LVBI] - UpDn;
> > >> >>   UpDn = UpDn / 2;
> > >> >>   if (UpDn <= Acc)
> > >> >>   {
> > >> >>   j = i;
> > >> >>   i = 99999;
> > >> >>   }
> > >> >>   }
> > >> >>
> > >> >>   Accuracy = 100 * (abs(Goal - Calc) / Goal);
> > >> >>
> > >> >>   Filter = BarIndex() == LVBI;
> > >> >>
> > >> >>   AddColumn(Mult,
> > >> >>   "Multiplier",   1.0);
> > >> >>   AddColumn(Calc[LVBI - 1] / Mult, "Curr Ind Val", 1.9);
> > >> >>   AddColumn(Goal / Mult, "Goal Ind Val", 1.9);
> > >> >>   AddColumn(Calc[LVBI] / Mult, "Calc Ind Val", 1.9);
> > >> >>   AddColumn(j,
> > >> >>   "Iterations",   1.0);
> > >> >>   AddColumn(Accuracy,   "Accuray (%)",  1.9);
> > >> >>   AddColumn(Ref(P1, -1) / Mult, "Todays Price", 1.9);
> > >> >>   AddColumn(P1 / Mult, "Goal
> > >> >>   Price",   1.9);
> > >> >>
> > >> >>     ----- Original Message ----- 
> > >> >>     From: Ara Kaloustian
> > >> >>     To: [email protected]
> > >> >>     Sent: Monday, April 10, 2006 1:08 PM
> > >> >>     Subject: Re: [amibroker] Projecting prices
> > >> >>
> > >> >>
> > >> >>     thanks Bob,
> > >> >>
> > >> >>     I had temporarily come to the same conclusion but realized that 
> > >> >> for
> > >> >> my particular application I already have the high and low prices ... 
> > >> >> just
> > >> >> need to calculate the close.
> > >> >>
> > >> >>     My application is to use historical data for backtest and figure 
> > >> >> out
> > >> >> a way to make it equivalent to using real time data by calculating the
> > >> >> exact price required to produce a signal, obviously within  the 
> > >> >> exixting
> > >> >> price range.
> > >> >>
> > >> >>     It's a clumsy solution since I will not be able to use the AB
> > >> >> backtester, but useful (I think). It would be great if AB backtester
> > >> >> could be used ...
> > >> >>
> > >> >>     So technically "projecting" prices in the subject line is a bit
> > >> >> misleading for this case...
> > >> >>
> > >> >>
> > >> >>     Ara
> > >> >>       ----- Original Message ----- 
> > >> >>       From: Bob Jagow
> > >> >>       To: [email protected]
> > >> >>       Sent: Sunday, April 09, 2006 11:07 PM
> > >> >>       Subject: RE: [amibroker] Projecting prices
> > >> >>
> > >> >>
> > >> >>       An algebraic solution is possible only  for indicators 
> > >> >> dependent 
> > >> >> on
> > >> >> a single price array.
> > >> >>       That rules out CCI and Stochastics.
> > >> >>
> > >> >>       Bob
> > >> >>         -----Original Message-----
> > >> >>         From: [email protected]
> > >> >> [mailto:[email protected]]on Behalf Of Ara Kaloustian
> > >> >>         Sent: Sunday, April 09, 2006 9:43 PM
> > >> >>         To: AB-Main
> > >> >>         Subject: [amibroker] Projecting prices
> > >> >>
> > >> >>
> > >> >>         I am trying to figure out the required price to create a
> > >> >> particular value of an indicator.
> > >> >>
> > >> >>         Example: My CCI is at 50. I would get a signal if CCI reached 
> > >> >> 55.
> > >> >> What is the require value of price that would make CCI to rise to 55?
> > >> >>
> > >> >>
> > >> >>         This kind of calculation can be used to anticipate a signal 
> > >> >> and
> > >> >> allow us to place a conditional order for next day.
> > >> >>
> > >> >>         I am looking for the formulae to accomplish this for CCI,
> > >> >> Stochastics and MACD.
> > >> >>
> > >> >>         The formulae should be bit of algebra, but rather time 
> > >> >> consuming
> > >> >> to develop.
> > >> >>
> > >> >>         Wonder if anyone has already worked on this issue before.
> > >> >>
> > >> >>         Appreciate any help
> > >> >>
> > >> >>         ara
> > >> >>
> > >> >>
> > >> >>     Please note that this group is for discussion between users only.
> > >> >>
> > >> >>     To get support from AmiBroker please send an e-mail directly to
> > >> >>     SUPPORT {at} amibroker.com
> > >> >>
> > >> >>     For other support material please check also:
> > >> >>     http://www.amibroker.com/support.html
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >> ----------------------------------------------------------------------------
> > >> >>     YAHOO! GROUPS LINKS
> > >> >>
> > >> >>       a..  Visit your group "amibroker" on the web.
> > >> >>
> > >> >>       b..  To unsubscribe from this group, send an email to:
> > >> >>        [email protected]
> > >> >>
> > >> >>       c..  Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> > >> >> Service.
> > >> >>
> > >> >>
> > >> >> ----------------------------------------------------------------------------
> > >> >>
> > >> >
> > >> >
> > >> >
> > >> >
> > >> > ------------------------------------
> > >> >
> > >> > **** IMPORTANT PLEASE READ ****
> > >> > This group is for the discussion between users only.
> > >> > This is *NOT* technical support channel.
> > >> >
> > >> > TO GET TECHNICAL SUPPORT send an e-mail directly to
> > >> > SUPPORT {at} amibroker.com
> > >> >
> > >> > TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> > >> > http://www.amibroker.com/feedback/
> > >> > (submissions sent via other channels won't be considered)
> > >> >
> > >> > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> > >> > http://www.amibroker.com/devlog/
> > >> >
> > >> > Yahoo! Groups Links
> > >> >
> > >> >
> > >> >
> > >> >
> > >>
> > >
> > >
> > >
> > >
> > > ------------------------------------
> > >
> > > **** IMPORTANT PLEASE READ ****
> > > This group is for the discussion between users only.
> > > This is *NOT* technical support channel.
> > >
> > > TO GET TECHNICAL SUPPORT send an e-mail directly to
> > > SUPPORT {at} amibroker.com
> > >
> > > TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> > > http://www.amibroker.com/feedback/
> > > (submissions sent via other channels won't be considered)
> > >
> > > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> > > http://www.amibroker.com/devlog/
> > >
> > > Yahoo! Groups Links
> > >
> > >
> > >
> > >
> >
>


Reply via email to