Drew --
Notice that the IIF() operator took only one line of code, while the
for() and if() operators took eight lines.
Array operations are much more efficient and much less error prone. Use
them when ever possible!!
Use for() *ONLY* when you have to.
-- Keith
Edward Pottasch wrote:
IIF operates on an array en returns an array. So if you want to simple
fill the array "position" with 1 if Buy is 1 you can simple do:
position = Buy;
if you like to use the IIF operater the equivalent is:
position = IIF(Buy,1,0);
if you like to use a loop the equivalent is:
position = 0;
for ( i = 0; i < BarCount; i++) {
if (Buy[ i ] == 1) {
position[ i ] = 1;
} else
position[ i ] = 0;
}
}
rgds, Ed
----- Original Message -----
*From:* thomasdrewyallop <mailto:[EMAIL PROTECTED]>
*To:* [email protected] <mailto:[email protected]>
*Sent:* Sunday, March 11, 2007 11:57 AM
*Subject:* [amibroker] What is wrong with this simple code
Buy = cross ( Close, MADaily );
for ( i = 1; i < BarCount; i++)
{
IIf (Buy[i], position[i] = 1, 0);
}
I run an explore and get position[1] == 0 and the remainder of the
array == 1 ( there are only two buy signals triggered). Is there
something about the Buy array I am missing?
Best regards,
Drew Yallop