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
);
----- 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 ?>