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

[amibroker] Re: A very basic formula question



PureBytes Links

Trading Reference Links

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@xxx> 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/