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

[amibroker] Re: A very basic formula question



PureBytes Links

Trading Reference Links

Yup,

Your solution is more direct. If you want it to perform even faster, 
then just calculate RSI(14) once and store it in a local variable. 
Then use the local variable throughout the rest of the code, rather 
than recalculating over and over again.

Currently, you've got 5 occurences of the same calculation, this can 
be reduced to a single occurence, resulting in better performance.

Mike

--- In amibroker@xxxxxxxxxxxxxxx, "alogicalinvestor" 
<alogicalinvestor@xxx> wrote:
>
> Mike,
> 
> Thanks! The formula you gave does exactly what I wanted to do.
> 
> However, I wrote the following which gives the same result but is a
> bit faster.
> 
> // RSI going below 70 after being above for 3 days or more and RSI
> going above 30 after being below 30 for 3 days or more
> Buy = Cross(RSI(14),30) AND (BarsSince(Cross(30,RSI(14))) >= 3);
> Sell = Cross(70,RSI(14)) AND (BarsSince(Cross(RSI(14),70)) >= 3);
> 
> Filter  = (Buy OR Sell);
> 
> AddTextColumn(FullName(), "Security", 1.0, colorDefault,
> colorDefault,200);
> AddColumn(RSI(14),"RSI(14)",1.2, colorDefault, colorDefault,200);
> AddTextColumn( WriteIf(Buy, "BULLISH", WriteIf
(Sell, "BEARISH", "")), 
>                 "BULLBEAR", 1.0, colorDefault, colorDefault,100);
> 
> However, I learned a couple of new things with your approach.
> 
> Best,
> vps
> --- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@> wrote:
> >
> > Have a look at the Sum function. I believe that the following 
will do 
> > what you are looking for.
> > 
> > Change the values of UpDays and Threshold to be any number of 
> > consecutive up days (e.g. 3) and the threshold required to cross 
> > (e.g. 70). Change the CountRSIAbove comparrison to an inequality 
for 
> > more flexibility
> > e.g.
> > ... AND CountRSIAbove >= 2; // 2 of last 3 days
> > ... AND CountRSIAbove >= UpDays - 1; // Generic x-1 of x last days
> > 
> > UpDays = 3;
> > Threshold = 70;
> > 
> > CurrentRSI = RSI();
> > PreviousRSIAbove = Ref(CurrentRSI, -1) >= Threshold;
> > CountRSIAbove = Sum(PreviousRSIAbove, UpDays);
> > RSIBelow = Cross(Threshold, CurrentRSI);
> > Filter = RSIBelow AND CountRSIAbove == UpDays;
> > 
> > for (i = UpDays; i > 0; i--) {
> >   AddColumn(Ref(CurrentRSI, -i), "" + i + " days ago");
> > }
> > 
> > AddColumn(CurrentRSI, "Today");
> > 
> > Mike
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx, "alogicalinvestor" 
> > <alogicalinvestor@> wrote:
> > >
> > > Friends,
> > > 
> > > A very basic Amibroker formula question from a newbie.
> > > 
> > > I am trying to write an exploration that finds stocks whose RSI 
line
> > > moved below 70 today after being above 70 for the previous 
three 
> > days.
> > > 
> > > I am not sure how to handle the 'previous three days' part.
> > > 
> > > One way I can think of is Ref(RSI, -1), Ref(RSI,-2) and then 
> > checking
> > > these RSI values individually to determine if they were above 
70.
> > > 
> > > But I am sure there is a simpler way.
> > > 
> > > Thanks,
> > > vps
> > >
> >
>



------------------------------------

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

<*> 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:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto: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/