PureBytes Links
Trading Reference Links
|
Here is some code I found somewhere and saved.
/*
As an example, to calculate tomorrow's close to give an RSI(14) of 25%:
nextClose = NextRSI(BarCount- 1, 14, -1, 25);
or to calculate tomorrow's RSI for a close of $1.20:
nrsi = NextRSI(BarCount- 1, 14, 1.20, -1);
*/
function NextRSI( bar, period, nextClose, nrsi )
{
if ( bar >= period + 1 )
{
clb = Close[bar];
if ( clb == Close[bar-1] )
Close[bar] = Close[bar] + 0.0001; // To avoid "0/0" term
rsiArr = RSI( period );
rval = 0;
rs = 100 / ( 100 - rsiArr[bar] ) - 1;
rsp = 100 / ( 100 - rsiArr[bar-1] ) - 1;
cgn = Close[bar] - Close[bar-1] ;
cls = -cgn;
if ( cgn < 0 )
cgn = 0;
if ( cls < 0 )
cls = 0;
alp = 0;
if ( rsp - rs )
alp = ( cls * rs - cgn ) / ( ( period - 1 ) * ( rsp - rs ) );
agp = rsp * alp;
als = ( alp * ( period - 1 ) + cls ) / period;
agn = ( agp * ( period - 1 ) + cgn ) / period;
if ( nextClose >= 0 )
{
cgn = nextClose - Close[bar];
cls = -cgn;
if ( cgn < 0 )
cgn = 0;
if ( cls < 0 )
cls = 0;
rsx = ( agn * ( period - 1 ) + cgn ) / ( als * ( period - 1 ) + cls );
rval = 100 - ( 100 / ( 1 + rsx ) );
}
else
{
rsn = 100 / ( 100 - nrsi ) - 1;
if ( nrsi < rsiArr[bar] )
rval = Close[bar] - ( agn * ( period - 1 ) ) / rsn + als *
( period - 1 );
else
rval = Close[bar] + als * ( period - 1 ) * rsn - agn *
( period - 1 );
}
Close[bar] = clb; // Restore close array
}
return rval;
}
nextClose = NextRSI(BarCount- 1, 14, -1, 65);
--- In amibroker@xxxxxxxxxxxxxxx, "Steve Dugas" <sjdugas@xxx> wrote:
>
> That sounds like a job for Fred's "Price Predictor" code ( thanks Fred! ). I
> have attached it below, you will probably just need to plug your own values
> into the Calc and Goal statements.
>
> Steve
> _________________________________
>
> You supply:
>
> - The array in the first statement ( Assumedly Price )
> - The Indicator in the Calc = statement
> - The Goal in the Goal = statement
>
> ... It will return in Explore the value needed in the array in the
> next bar to have the indicator meet the goal in the next bar.
>
> This is set up for use with a typical MACD but can be easily modified
> for use with any indicator you can design.
>
> P0 = Close;
>
> Acc = 0.00001;
>
> LVBI = LastValue(BarIndex());
> Mult = 1;
>
> for (i = 0; i < 10; i++)
> {
> If (P0[LVBI] >= 1)
> i = 99;
> else
> {
> P0 = P0 * 10;
> Mult = Mult * 10;
> }
> }
>
> P1 = Ref(P0, 1);
> UpDn = 100 * P1[LVBI];
>
> for (i = 0; i < 200; i++)
> {
> Calc = EMA(P1,12)-EMA(P1,26);
> Goal = EMA(EMA(P1,12)-EMA(P1,26),9);
>
> if (Calc[LVBI] < Goal[LVBI])
> 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[LVBI] - Calc[LVBI]) / Goal[LVBI]);
>
> 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 / Mult, "Calc Ind Val", 1.9);
> AddColumn(j, "Iterations", 1.0);
> AddColumn(Accuracy, "Accuray (%)", 1.9);
> AddColumn(Ref(P1, -1) / Mult, "Current Array", 1.9);
> AddColumn(P1 / Mult, "Needed Array", 1.9);
>
>
> ----- Original Message -----
> From: "droskill" <droskill@xxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Tuesday, June 10, 2008 1:22 PM
> Subject: [amibroker] RSI - calculating an exit
>
>
> > Let's say that I've got a defined RSI level for an exit - and I'd like
> > to calculate a target based on that so I can have a stop order in the
> > market at a specific target. Is there anyway for me to calculate what
> > the price would be on a given RSI level?
> >
> > Thanks!
> >
> >
> > ------------------------------------
> >
> > 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 NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> > http://www.amibroker.com/devlog/
> >
> > For other support material please check also:
> > http://www.amibroker.com/support.html
> > 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/
|