AlgoVar .. AlgoVar,
AlgoVar2 .. AlgoVar2
16 general purpose variables for storing values specific to the current asset/algo combination. Every strategy component has its own set of AlgoVar variables; the sets are automatically switched with any algo or asset
call. The variables are stored in STATUS structs and can be used in portfolio strategies for values that are common to the algorithm, but different for every component of the strategy. They can also be used to pass asset/algorithm specific parameters to a TMF, or for storing parameters when a system is stopped and restarted.
AssetVar .. AssetVar
AssetStr .. AssetStr
16 general purpose locations for storing either numeric values, or strings specific to the current asset. Every asset has its own set of AssetVar/AssetStr variables; the sets are automatically switched with any asset call.
The locations are shared, i.e. either AssetVar[N] or
AssetStr[N] can be used, but not both with the same index N. The
first 8 variables or strings can be read at start from the asset list and stored in the ASSET structs. They can be used in portfolio strategies for parameters that are common to the algorithms, but different for every asset. AssetStr can only be modified with strcpy and has a maximum length of 7 characters.
Use double quotes (like "Text") for AssetStr strings in the asset list for distinguishing
them from numbers.
AssetInt .. AssetInt
AssetFloat .. AssetFloat
32 general purpose int or float variables
for internally storing integers or floats specific to the current asset. They are shared with
AssetVar/AssetStr at twice the index, i.e. AssetVar[N]
is shared with AssetInt[2*N] and AssetInt[2*N+1].
They cannot be read from the asset list.
AssetInt can also be used to store asset-specific series
pointers for using them in a tmf or tick
AssetO, AssetH, AssetL, AssetC, AssetP
of size NumBars in ascending order (no
series), containing the open, high, low, close, and
mean prices of the current asset for direct access. AssetC[Bar]
is the current close price. In portfolio strategies with assets of different
history lengths, not all elements of the arrays are filled. Unfilled elements
- Dependent on the SAV_ALGOVARS
flag, the AlgoVar and AlgoVar2 variables of
all algo/asset components are automatically saved and loaded at the end and
after the initial run of
a trading session. This way their values are preserved when a trading system is interrupted or restarted.
Otherwise AlgoVars and AssetVars are reset to
0 at the begin of a simulation.
- When training or predicting with an R machine learning algorithm, AlgoVar..AlgoVar are
automatically sent over to R and can there be used for setting up parameters to the learning process.
- AlgoVar vs static
series vs static variables: All three
can be used to persistently store per-component numerical parameters. If saving, loading, or reading from the asset list
is important, use AlgoVars or AssetVars. If
you need more than 16 persistent variables per component, use static series (with negative length
for not shifting). If the script trades only a single asset and a single algo,
you can also use static or global variables.
- The #define statement can be used for giving AlgoVars or AssetVars
meaningful names, like #define
To store a pointer instead of a var, use the as_int() macro, like #define MyPtr as_int(AlgoVar).
// in the run function
AlgoVar = 123;
// in the TMF
var MySpecificValue = AlgoVar;
algo, asset, TradeVar, SAV_ALGOVARS
► latest version online