The problem is this: If an entry order is placed along with automatic target and stop, and one of the exit prices exists on the same bar as the entry price, then both will get filled regardless of the obvious intrabar price movement.
Here's an example showing the problem, during backtest:

Here's the same example, showing correct behavior (strategy running during market replay):

The logic to simulate intrabar movement during backtesting seems broken. It should be as follows:
- Assume the intra-bar movement is open-low-high-close, if the open is in the lower half of the bar, or if the open is in the center and the close is in the upper half.
- Assume the intra-bar movement is open-high-low-close if the open is in the upper half of the bar, or if the open is in the center and the close is in the lower half.
Although I love NinjaTrader and have no wish to go back to TradeStation, I feel compelled to point out that TradeStation figured this out a decade ago, documented in the the TS2000i EasyLanguage manual published in 2001.
I know I can simulate the correct behavior by adding a shorter time frame to my strategy and executing orders on that. However, this isn't feasible with 1 minute bars on a deep history where providers don't maintain tick data. In that case it would be good to have a decent intrabar model to rely on.
Is there an improvment in the works, or is there a way I can improve it myself? I did have a look at DefaultFillType.cs and LiberalFillType.cs, but they seem to be related more on how to handle fills, rather than the sequence in which the fills should occur. I note that those files reference properties 'NextHigh' and 'NextLow', which might be related to this issue. If so, then the logic to determine their values doesn't seem to be working well.
I hope I have documented this problem adequately for your developer team. Let me know if you need further information.
-Alex

Comment