Several

Post some sample code (it really helps)

If the target is to write the values of indicators use the standard functionality Writer

See: https://www.backtrader.com/docu/writer.html Don't forget to do this with your indicator: self.mysma = bt.indicators.SMA(self.data, period=30) self.mysma.csv = True

The default behavior is to not write the value of indicators with a writer to avoid cluttering in the csv output and thus selected indicators must have the csv flag activated.

If a single data feed is added to the system with replaydata, only this data will be output. In this case the only data known to cerebro is the one with timeframe=bt.TimeFrame.Minutes and compression=15. The original is NOT in the system

Add it too with: cerebro.adddata(data)

The original behavior of backtrader enforced adding the larger timeframe data feeds after the smaller timeframe feeds. With the new sychronization mechanism available since 1.9.x., this is no longer needed. In any case the suggestions would be for this:

Add the larger timeframe (your replaydata) after the smaller timeframe (adddata) In that case: self.data0 will be the smaller timeframe and self.data1 the larger timeframe. Use the appropriate reference when creating the indicators Although not strictly needed use cerebro.run(next=True). This will keep the buffers fully sync'ed and allows plotting.