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

[amibroker] Re: Projecting prices


  • Date: Fri, 12 Feb 2010 19:09:25 -0000
  • From: "Mike" <sfclimbers@xxxxxxxxx>
  • Subject: [amibroker] Re: Projecting prices

PureBytes Links

Trading Reference Links

What I was suggesting was that you trigger the Buy based on High crossing above BBandTop, where BBandTop uses Close for its calculations. This will give you the desired backtest behavior of taking the signal on an intraday Cross.

Top = BBandTop(Close);
Buy = Cross(High, Top);
BuyPrice = Top;

But, what you are asking for is not actually attainable in real trading, even when predicting the eventual close, since the High will in many cases be long gone before you estimate the Close with which  to predict the BBandTop for the bar.

However, you could estimate the Close, calculate the estimated BBandTop, compare to the High to see if an intraday cross happened, then take the trade using Close as the BuyPrice. The reason is that at the time you are able to take the trade, the only price you have available to you is the (estimated) Close. 

Top = BBandTop(Close);
Buy = Cross(High, Top);
BuyPrice = Close;

Mike

--- In amibroker@xxxxxxxxxxxxxxx, "mbausys" <mbausys@xxx> wrote:
>
> Using High instead of Close is not accurate because when the price is at its high, the upper Bollinger Band is higher than it would be with EOD close and the actual intraday cross of price and BB might have not happened at all. This is exactly the problem I'm trying to avoid.
> 
> 
> Marius
> 
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@> wrote:
> >
> > Sounds like you could just use High instead of Close to see that the band was crossed intra day.
> > 
> > Mike
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx, "mbausys" <mbausys@> wrote:
> > >
> > > 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 amibroker@xxxxxxxxxxxxxxx, "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: <amibroker@xxxxxxxxxxxxxxx>
> > > > 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 amibroker@xxxxxxxxxxxxxxx, "Ara Kaloustian" <ara1@> wrote:
> > > > >>
> > > > >> Thanks Steve
> > > > >>
> > > > >> A
> > > > >>   ----- Original Message ----- 
> > > > >>   From: Steve Dugas
> > > > >>   To: amibroker@xxxxxxxxxxxxxxx
> > > > >>   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: amibroker@xxxxxxxxxxxxxxx
> > > > >>     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: amibroker@xxxxxxxxxxxxxxx
> > > > >>       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: amibroker@xxxxxxxxxxxxxxx 
> > > > >> [mailto:amibroker@xxxxxxxxxxxxxxx]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:
> > > > >>        amibroker-unsubscribe@xxxxxxxxxxxxxxx
> > > > >>
> > > > >>       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

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    amibroker-digest@xxxxxxxxxxxxxxx 
    amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

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