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 [email protected], "alogicalinvestor"
<[EMAIL PROTECTED]> 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
>