You can load the data using a loop and enumerate data in strategy. Some of the posts that could help you
But not sure of memory limitations.. @vladisld has a post to save some memory
Technically it should work ( in start method for example), however IMHO it is better to set the position outsize the strategy code - just in case you would like to re-use your strategy in live-trading or otherwise keep you strategy code independent of external setup.
Analyzer is probably a better place - you may always switch the analyzer on for back testing and off for live trading for example - leaving your strategy code intact.
When you pass close to RSI indicator.. its self.data.close not self.close
params = (('period', 14),)
self.rsi = bt.indicators.RSI_Safe(self.data0.close, period=14)
self.smooth_rsi = bt.indicators.ExpSmoothing(self.rsi, period=8)