Hello,
And of course you can use IIF inside the loop but you should always think
if you are operating on arrays or on numbers. The rules are that you can not
use array where just number is expected. For example if you are assigning
value
to the array element then a number is needed.
a[ 0 ] = IIF( x[ 0 ] > y[ 0 ], C[ 0 ], H[ 0 ] );
// all parameters are numbers -> result is also a number and can be assigned
to single array element
Best regards, Tomasz Janeczko amibroker.com
----- Original Message -----
Sent: Monday, June 27, 2005 11:18
PM
Subject: Re: [Amibroker] Creating a
toggle switch
Hello,
Explained in the User's Guide, "Common coding
mistakes"
if-else statement needs boolean (or single
numeric expression), not array
The if keyword executes statement1 if expression is
true (nonzero); if else is present and expression is false
(zero), it executes statement2. After executing statement1 or
statement2, control passes to the next statement. Expression
must be boolean ( True/False) type (so it CANNOT be ARRAY because there
would be no way do decide whether to execute statement1 or not, if for
example array was: [True,True,False,.....,False,True] )
if( expression ) statement1 else
statement2
EXAMPLE
if( Close > Open ) // WRONG Color = colorGreen; //statement 1 else Color =
colorRed;
//statement 2
Plot(Close,"Colored Price",Color,styleCandle);
The above example is wrong, as both Open and Close are arrays
and such expression as Close > Open is also an ARRAY. The
solution depends on the statement. It’s either possible to implement it on
bar-by-bar basis, with use of FOR loop:
for( i = 0; i
< BarCount;
i++ ) { if( Close[ i ] > Open[ i ] ) // CORRECT Color[ i ] =
colorGreen;
else Color[ i ] =
colorRed; }
Plot(
Close,
"Colored Price", Color,
styleCandle
);
It is also possible in this case to use IIf( ) function:
Color = IIf( Close > Open, colorGreen, colorRed ); // ALSO CORRECT - working directly on arrays Plot(
Close,
"Colored Price", Color,
styleCandle
);
Best regards, Tomasz Janeczko amibroker.com
----- Original Message -----
Sent: Monday, June 27, 2005 5:31
PM
Subject: RE: [Amibroker] Creating a
toggle switch
Tomasz will have
to explain the circumstances in which this works or not.
I just know I
have gotten errors trying to use the array IIF inside a loop, which doesn’t
even make sense since which part of the array would you be referencing when
looping through bar by bar?
Did you try my
version? Does it work?
-----Original
Message----- From:
amibroker@xxxxxxxxxxxxxxx
[mailto:amibroker@xxxxxxxxxxxxxxx]
On Behalf Of
wavemechanic Sent: Monday, June 27, 2005
09:05 To:
amibroker@xxxxxxxxxxxxxxx Subject: Re: [Amibroker] Creating a
toggle switch
----- Original Message -----
Sent:
Monday, June 27, 2005 9:24 AM
Subject: RE:
[Amibroker] Creating a toggle switch
You can't use IIF inside a loop. I'm surprised you
aren't getting compiler errors.
I must not be
following something here. Look at the following loop from the Users
Manual modified with an IIF which works OK. What am I
missing?
Len = Param("Len", 20, 10, 50, 10);
factor = 2 / (Len + 1);
e1 = e2 = Close[0];
for(i = 0; i <
BarCount;
i++)
{
e1 = factor *
Close[ i ] + ( 1 - factor ) *
e1;
e2 = factor * e1 +
(1 -
factor) * e2;
myDemaIIF[i] = IIf(len == 20, 2 * e1 - e2,
0);
}
Plot(myDemaIIF, "Dema in iif
loop", colorRed);
Plot(DEMA(C, Len), "Built-in DEMA", colorWhite);
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 other
support material please check also: http://www.amibroker.com/support.html
---- LSpots keywords ?>---- HM ADS ?> 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 other support material please check also: http://www.amibroker.com/support.html
---- LSpots keywords ?>---- HM ADS ?>
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 other support material please check also: http://www.amibroker.com/support.html
---- LSpots keywords ?>---- HM ADS ?>
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 other support material please check also:
http://www.amibroker.com/support.html
---- LSpots keywords ?>
---- HM ADS ?>
YAHOO! GROUPS LINKS
|