Helper functions
The following functions are implemented for convenience and for easier converting code from other platforms.
ifelse(bool c, var x, var y): var
ifelse(bool c, int x, int y): int
ifelse(bool c, string x, string y): string
Returns x when the expression or condition c is
true or nonzero, otherwise y.
Parameters:
c - any integer or boolean expression.
x,y
- variable, constant, or string, both of the same
type.
Returns:
x when c is true, otherwise y.
once(bool c): int
Helper function; returns nonzero when its c parameter became
true or nonzero the first time in a session or backtest. Afterwards
it returns 0 regardless of c. Can only be
called once per bar.
Parameters:
c - any integer or boolean expression.Returns:
1 when called the first time with a nonzero c,
otherwise 0.
changed(var V): int
Helper function; returns 1 when its V value
has increased since the last bar, -1 when it has decreased,
0 otherwise. Can be called multiple times per bar. Creates an
internal series (see remarks). Source code in indicators.c.
Parameters:
V - any variable.Returns:
1 or -1 when V has changed
since the last bar, otherwise 0.
barssince(bool c): int
Returns the number of bars or time frames since the expression or condition
c was true or nonzero the last time, or -1 when
it was never true. This function internally creates series
(see remarks). Source code in indicators.c.
Parameters:
c - any integer or boolean expression.Returns:
Number of bars, 0 when true on the current bar, -1
when never true.
cum(var Inc): var
Accumulates Inc at any bar, and returns the sum. This function internally creates
a series
(see remarks). Source code in indicators.c.
Parameters:
Inc - variable to be added.Returns:
Sum of all Inc values so far.
valuewhen(bool c, vars Data, int n): var
Returns the Data value at which the expression or condition
c was true or nonzero on the n-th most recent
occurrence. This function internally creates series
(see remarks). Source code in indicators.c.
Parameters:
c - any integer or boolean expression.
Data
- data series of LookBack elements.
n
- number of occurrences, 1 = most recent, 2 =
second most recent etc.
Returns:
Data[i] when c was true the n-th
time i bars ago, otherwise 0.
Remarks:
- When functions are used for x and y, be
aware that both are always executed when ifelse is called,
regardless of the state of c. Use if for
executing functions depending on a condition.
- Some functions internally create data series, and thus
must be called the same number of times and in the same order at any bar.
They must therefore not depend on if conditions.
Examples:
var MaxOfXY = ifelse(X > Y,X,Y);
var CloseAtLastCross = valuewhen(crossOver(Data1,Data2),seriesC(),1);
if(once(!is(LOOKBACK))) printf("\nEnd of lookback reached!");
See also:
abs, min, max,
between, sign,
clamp, if,
fix0
►
latest version online