Mike & Herman, Thanks.
Just out of interst, I have actually coded my problem now. Once using only AFL in it's purest form (i.e. the IIF() route) and once using a classic looping structure with [i] array referencing. Out of interest, using the 'check' function in the foruma editor, the pure AFL code is about twice as fast as a looping structure. Thanks again. --- In [email protected], "Mike" <[EMAIL PROTECTED]> wrote: > > Herman gave a viable answer in his last post. > > I'd just like to add that I wouldn't let any bias against looping > stand in the way of advancing an idea. So few ideas have any real > promise that the sooner you can get something up and tested the > better. > > You can always refine the code later. Even then, there is a lot to be > said for code that reads well (to you) vs. code that performs well. If > after a month's time you find yourself again struggling to decipher > the code, then you might have been better off going with a more > familiar construct. > > Mike > > --- In [email protected], "sidhartha70" <sidhartha70@> > wrote: > > > > Mike & Herman, > > > > Thank you. Both good ideas... and sorry about moving the goal posts > > here... but the problem is still becoming clear to me as I think > about > > it more... Actually, the problem I have with IIF() in these > > circumstances is where I want to evaluate more than one expression > > within the if() condition... for example, > > > > HLRange = abs( H - L ); > > ABC = HLRange > Ref( HLRange, -1 ) AND HLRange > Ref( HLRange, -2) > AND > > HLRange > Ref( HLRange, -3 ); > > XYZ_Check=IIf(Ref(ABC,-1),1,IIf(Ref(ABC,-2),2,IIf(Ref(ABC,- > 3),3,0))); > > > > if(XYZ_Check==0) > > { > > RU1_Check = Open>Ref(Open,-1) AND Open>Ref(Open,-2) AND > Open>Ref(Open,-3); > > RU2_Check = Close>Ref(Close,-1) AND Close>Ref(Close,-2) AND > > Close>Ref(Close,-3); > > } > > if(XYZ_Check==1) > > { > > RU1_Check = Open>Ref(Open,-2) AND Open>Ref(Open,-3) AND > Open>Ref(Open,-4); > > RU2_Check = Close>Ref(Close,-2) AND Close>Ref(Close,-3) AND > > Close>Ref(Close,-4); > > } > > if(XYZ_Check==2) > > { > > RU1_Check = Open>Ref(Open,-3) AND Open>Ref(Open,-4) AND > Open>Ref(Open,-5); > > RU2_Check = Close>Ref(Close,-3) AND Close>Ref(Close,-4) AND > > Close>Ref(Close,-5); > > } > > if(XYZ_Check==3) > > { > > RU1_Check = Open>Ref(Open,-4) AND Open>Ref(Open,-5) AND > Open>Ref(Open,-6); > > RU2_Check = Close>Ref(Close,-4) AND Close>Ref(Close,-5) AND > > Close>Ref(Close,-6); > > } > > > > Sorry if this is labouring a point. But I always get stuck by this > > structure... I guess I should just use a loop, but I am loathe to if > > there is another way. > > > > TIA > > > > --- In [email protected], "Mike" <sfclimbers@> wrote: > > > > > > Why not do it the same way you did XYZ_Check? Also, it would be > more > > > efficient to add variables rather than repeating the same > operation. > > > > > > Open1 = Open > Ref(Open, -1); > > > Open2 = Open > Ref(Open, -2); > > > ... > > > Open6 = Open > Ref(Open, -6); > > > > > > Open123 = Open1 AND Open2 AND Open3; > > > Open234 = Open2 AND Open3 AND Open4; > > > ... > > > Open456 = Open4 AND Open5 AND Open6; > > > > > > RU1_Check = IIF(XYZ_Check == 0, > > > Open123, > > > IIF(XYZ_Check == 1, > > > Open234, > > > IIF(XYZ_Check == 2, > > > ... > > > ); > > > > > > Mike > > > --- In [email protected], "sidhartha70" <sidhartha70@> > > > wrote: > > > > > > > > Herman, > > > > > > > > This is where the problem occurs... because what I actually want > to > > > do > > > > within each conditional if() statement is carry out some more > array > > > > manipulations. For example, > > > > > > > > HLRange = abs( H - L ); > > > > ABC = HLRange > Ref( HLRange, -1 ) AND HLRange > Ref( HLRange, - > 2) > > > AND > > > > HLRange > Ref( HLRange, -3 ); > > > > XYZ_Check=IIf(Ref(ABC,-1),1,IIf(Ref(ABC,-2),2,IIf(Ref(ABC,- > > > 3),3,0))); > > > > > > > > if(XYZ_Check==0) > > > > { > > > > RU1_Check = Open>Ref(Open,-1) AND Open>Ref(Open,-2) AND > > > Open>Ref(Open,-3); > > > > } > > > > if(XYZ_Check==1) > > > > { > > > > RU1_Check = Open>Ref(Open,-2) AND Open>Ref(Open,-3) AND > > > Open>Ref(Open,-4); > > > > } > > > > if(XYZ_Check==2) > > > > { > > > > RU1_Check = Open>Ref(Open,-3) AND Open>Ref(Open,-4) AND > > > Open>Ref(Open,-5); > > > > } > > > > if(XYZ_Check==3) > > > > { > > > > RU1_Check = Open>Ref(Open,-4) AND Open>Ref(Open,-5) AND > > > Open>Ref(Open,-6); > > > > } > > > > > > > > Any way to achieve this across the entire price array outside of > a > > > > loop....? > > > > > > > > TIA > > > > > > > > > >
