Please repeat: *"backtrader doesn't repeat days"*. Repeat again: *"backtrader doesn't repeat days"*

You haven't thought this through

- You have multiple data feeds and they don't deliver data with the same timestamps
- Which means the data are not synchronized and move differently

Consider this scenario and try to answer the question (a lot more useful, imho, than looking into the source code)

- Data feeds
`d1`

and`d2`

give you data for time`t`

`d1`

delivers then data for time`t + 1`

`d2`

delivers then data for time`t + 2`

It should be obvious that

- data for time
`t`

can be presented simultaneously for`d1`

and`d2`

- data for time
`t + 1`

can be updated for`d1`

The question

- What is your expectation at time
`t + 1`

for data`d2`

? Because as presented above,`d2`

will first have new data at time`t + 2`

Now read:

- Docs - Platform Concepts and consider the section
*"Lines -*`len`

"

After answering the question and reading the docs, the following will probably be obvious:

- Create an array during
`__init__`

or`start`

with a`0`

for each of the data feeds: for example`self.dl = [0] * len(self.datas)`

- Create a temporary equivalent on entry to
`next`

with actual lens:`dl = [len(d) for d in self.datas]`

- Check which ones have actually changed:
`dlnew = [x - y for x, y in zip(dl, self.dl)]`

- Get the indices to it:
`dlidx = [i for i, x in enumerate(dlnew) if x]`

- Keep actual lenghts:
`self.dl = dl`

Now `dlidx`

contains the indices to the data feeds which have changed. since the last call to `next`