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" <a...@...> 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. > > > ---------------------------------------------------------------------------- >
