Thanks for the answer.

To be honest, i am feeling really dumb, since i didn't understand the
explanation.

Please suppose the following scenario:

Low[9]=950
Intermed[9]=970
High[9]=1000

auxCrossedIntermed=IIf(Low< Intermed AND High> Intermed,1,0);
CrossedIntermed=auxCrossedIntermed OR Ref(CrossedIntermed,-1);

On the bar #10, how will Amibroker evaluate the second formula?
During the evaluation, what will be the values for auxCrossedIntermed
 and Ref(CrossedIntermed,-1) ?


Best Regards!


--- In [email protected], "ian_rosbif" <[EMAIL PROTECTED]> wrote:
>
> Hi,
> Are you trying use "...OR Ref(CrossedIntermed,-1);" to get the cross 
> to persist in CrossedIntermed? In other words, if the cross occurs at 
> 11:45, the following 15 elements of Crossintermed should be "1" until 
> 12:01, when they should then all have "666" in them?
> 
> In which case, the problem lies with the "circular" nature of:
> >>CrossedIntermed=auxCrossedIntermed OR Ref(CrossedIntermed,-1);
> 
> auxCrossedIntermed will have a combination of 1s & 0s in it, but 
> these aren't actually "moved" to Crossedintermed until the statement 
> hase been fully evaluated. Therefore Ref(Crossedintermed, -1) will 
> always evaluate to 0 at the time it's executed, even though the 1 
> appears in the array element representing the cross event after the 
> statement has been executed.
> 
> This is something that drove me mad before I cottoned onto it.
> maybe this would work:
> 
> // initialise final values
> CrossedIntermed=IIf(TimeNum()>120000, 666, 0);
> // set cross events
> auxCrossedIntermed=IIf(Low< Intermed AND High> Intermed, 1, 0);
> // cross persists for whole day after it occurs once
> auxCrossedIntermed = Flip(auxCrossedIntermed, True==False);
> // finalise values
> CrossedIntermed=IIf(TimeNum()>120000, 666, auxCrossedIntermed);
> 
> If you want the "1" to persist after midday, change the last 
> statement to:
> CrossedIntermed=IIf(auxCrossedIntermed, auxCrossedIntermed, 
> CrossedIntermed);
> 
> 
> --- In [email protected], "nunopires2001" <nunopires2001@> 
> wrote:
> >
> > Hello,
> > 
> > After a encouraging start with Amibroker, i am realizing that 
> writing
> > code on AFL is not all that simple...
> > 
> > Anyone can explain me what is wrong with these lines of code?
> > 
> >     CrossedIntermed=0;
> >     auxCrossedIntermed=IIf(Low< Intermed AND High> Intermed,1,0);
> >     CrossedIntermed=auxCrossedIntermed OR Ref(CrossedIntermed,-1);
> >     CrossedIntermed=IIf(TimeNum()>120000,666,CrossedIntermed);
> > 
> > I am working with intraday, 1min data. The market opens at 110000 
> and
> > closes at 193000.
> > 
> > I just want to check the CrossedIntermed Value after 12.00h, and the
> > value returned should be:
> > -> 1: If the security crossed Intermed
> > -> 0: Otherwise
> > -> 666: If TimeNum()>120000
> > 
> > 
> > Thanks alot!
> >
>


Reply via email to