PureBytes Links
Trading Reference Links
|
Thanks Steve
A
----- Original Message -----
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 -----
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 -----
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
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
|
|