Right now, OnBarUpdate isn't called until there is data available for every instrument. Suppose I have a 10-instrument strategy with 24 months of historical data for 9 instruments, and 3 months of data for 1 instrument. I call my strategy with "BarsRequired=0" with a starting date 24 months ago. The first call to OnBarUpdate will be 3 months ago (not 24 like I want), NT7 does not call OnBarUpdate for the 21-month period where it has data for 9 instruments but not the 10th.
I'd like "BarsRequired=0" to mean exactly that; i.e. OnBarUpdate will be called for every bar of every instrument, without regard to whether the other instruments have data available. If there is some reason you think you need to retain the current behavior, please consider a special "BarsRequired= -1" which behaves this way.
This would also affect multitimeframe strategies. Right now, if I have a strategy which uses 1-minute and 30-minute data, OnBarUpdate is not called for the first 29-minutes of the 1-minute series, even if BarsRequired=0. This is also undesireable, it means that the first day's backtest results are impacted because the 1-minute series didn't see the entire day.
I have strategies with a lot of instruments (i.e. 100 instruments with 1-minute bars). The strategies can handle missing data. When running with a new set of instruments, if I use an instrument which has less data available than the others, then OnBarUpdate is never called for a lot of the desired period, and it's tedious to debug because I have to inspect each instrument's historical data to figure out which instrument(s) are causing the problem.
Thanks,
Kevin

Comment