FIX: move Initialize() call out, call it before the LoadState #1455
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The new generation of strategies introduces the use of
common.Strategy
, which is embedded as a struct to simplify the strategy implementation. This approach reduces the amount of code required for writing strategies. During the transition from YAML configuration to runtime instance, whenever any configuration field ofcommon.Strategy
is set, it initializes thecommon.Strategy
structure to enable persistence. In other words,s.Strategy == &common.Strategy
is established by the JSON unmarshal process. Conversely, if it's not set,s.Strategy
becomesnil
, preventing persistence from being loaded.Inside the
Run()
function, we directly assigns.Strategy = &common.Strategy{}
. This overwrites the object that was previously loaded from persistence, causing the strategy to start with zeroed data when it stops. Initially, the intention was to moves.Strategy = &common.Strategy{}
inside theInitialize()
method of the strategy. However, this phase still occurs afterLoadState
, resulting in persistence being cleared.The original stages of the strategy launch were as follows:
trader.Configure
: Mount strategies.trader.LoadState
: Load persistence.Run
: ExecuteStrategy Initialize()
,Defaults()
, andRun()
.The modified stages are as follows:
trader.Configure
: Mount strategies.trader.Initialize
: Call strategyInitialize()
.trader.LoadState
: Load persistence.Run
: Execute strategyDefaults()
andRun()
.