PureBytes Links
Trading Reference Links
|
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@xxx> 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
<*> 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/
|