Comment on page
Memory Management
Keeping track of values
There are 2 ways in which we can preserve data between update cycles. With the
IfNull()
command or the Load()
and Save()
commandsThe
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 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.
With
Save()
& Load()
we can preserve data between update cycles. 
Remember to always save your values if they are loaded.
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.
Last modified 4yr ago