Memory Management

Keeping track of values

Script Editor

There are 2 ways in which we can preserve data between update cycles. With the IfNull() command or the Load() and Save() commands

IfNull

The IfNull() command will initialize a variable when it has no value set yet.

-- Initialize value as global
highestValue = IfNull(highestValue, 0)
-- Update value
highestValue = Max(highestValue, CurrentPrice().high)

Notice that IfNull only works with global variables. If you define your variable as local and assign values to it using IfNull, you will get an error about unknown references.

Load & Save

Load & Save work the same as IfNull() but with 2 commands. This set can be used in the normal scripts, but not in custom command scripts. Custom commands do not support IfNull() because global variables in custom commands are not allowed.

-- Initialize value as local
local highestValue = Load('highestValue', 0)
-- Update value
highestValue = Max(highestValue, CurrentPrice().high)
-- Save value
Save('highestValue', highestValue)

Load and Save works best with local variables.

Remember to always save your values if they are loaded.

Visual Editor

Between update cycles

With Save() & Load() we can preserve data between update cycles.

Remember to always save your values if they are loaded.

In Script

The Visual Editor has 2 special blocks that can be used in your script that transfers values from A to B without connecting a line. This can be useful if you need to use a value on multiple places or when you want to remove long lines from your script. SessionSet() will save the value and SessionGet() will get the value and continue execution. This set can also be used in order to control execution flow within your script.

The values saved by SessionSet() are reset after every update cycle.