Doing data resampling in a custom Live feed

I am developing a custom data feed for live data. I am following the Oanda data feed example to fetch the data.

The exchange supports only these timeframes: 1m, 5m, 10m, 1d

When I do:cerebro.resampledata(data, timeframe=bt.TimeFrame.Minutes, compression=15)

it is recalling the start() method of the feed. Since the exchange doesn't support this format, the feed exits. I have tried to play with the resample() and replay() function but to no avail.

My issue is this: How to load the data using exchange supported timeframes like 5m and then resample it to 15m internally using backtrader.

The portion of start() function from the oanda example:

otf = self.o.get_granularity(self._timeframe, self._compression) # resampling calls this with the new timeframe and it fails since exchange doesn't support the resampled timeframe
if otf is None:
self.put_notification(self.NOTSUPPORTED_TF)
self._state = self._ST_OVER
return

When you call resampledata, it calls the start function of the data feed with the resampled timeframe and compression.

Suppose the resampled data feed is timeframe=bt.TimeFrame.Minutes, compression=15 and the supported timeframe by the exchange is timeframe=bt.TimeFrame.Minutes, compression=5 and 1.

For efficient execution, you need to find the highest timeframe which can upsample to the required timeframe/compression. By timestamping the data, backtrader makes sure to return the data in the correct time interval. In this case it will be timeframe=bt.TimeFrame.Minutes, compression=5.

One just needs to make sure that the timeframe requested can be created by the timeframes returned by the exchange.