In this method, all indicator blocks would be loaded into memory at once with buy and sell trades taken at random for each indicator block. Then blocks are grouped into strategies based on which simulated blocks were simultaneously in profit. Indicator blocks are removed on subsequent generations based on which indicator blocks profited the least (or based on custom fitness optimization). A rolling maximum of distance in profit (X ATR or X pips) can be taken for each block and averaged between blocks in order to suggest a TP value, and vice versa from SL values with losses. If symmetry is selected, strategies would be built with symmetric indicator blocks and remove the respective indicator blocks on both sides. If using an indicator block for TP/SL, a set of blocks should be selected for possible TP/SL, and they are simulated simultaneously with the generated strategies.
The theory behind this is based on ensemble learning, however because we are using a version of a random forest, this is essentially an inverted random forest in that all indicators are tested at once and then reduced as generations continue. The downsides to this are that it may be complex to simulate all of this data simultaneously and would be slower than the current method. I should get faster as generations progress as indicators are being removed on subsequent generations. There may also be room for parallel computation to speed up this process as all the indicator blocks are simulated simultaneously.
Completing this may also require this task to be completed so that a set of indicators can be selected for TP/SL (would not want to simulate all indicator block TP/SL simultaneously):
https://roadmap.strategyquant.com/tasks/sqp_0026