2:20pm CDT - Well after much head banging, compiling, editing, and compiling again, I have finished coding my ZS1 system strategy in Ninjatrader. This was certainly a learning opportunity and I'm sure I'll be quicker coding future strategies. Plus ZS1 was never designed with "ease of coding" in mind. In fact, there was one alternate entry in ZS1 I didn't even bother coding. More on that later. But here's the P/L curve:
And here's the exact same period below (same 1 lot trades, same commission/slippage) that I had recorded over past year into Excel after scrolling through the charts and seeing where I would have entered and exited following the same rigid rules I coded into the chart above.
Not quite identical eh? In fact, they barely look related at all. Perhaps my alternative entry played a bigger role than I thought? I may have to look at that more. And my Ninja code did not consider fast or slow markets - it took every trade. I'm sure I filtered out some trades during news, etc. in my manually recorded backtest. And I'm sure there are other reasons that don't come to mind.
A few numbers for you from the Ninja backtest: 135 wins, 114 losses (net after slippage & commissions) or 54.2% win rate. Avg$Win = $211, Avg$Loss = -$217. Avg$Net per trade per contract is just $14.80 or just over 1 tick. Not great!
Keep in mind this is all the data I can get for this strategy since it does not use time-based charts. Normally I would like to test years of data which I can only do with 1-minute or higher timeframes. And even minute based timeframes aren't easy to test in the grains because I do not have access to a reliable continuous contract. I have to test each contract separately and piece together. Below is what I sent both Ninja and DTN:IQ last month but they have no solution. IQ sets the continuous contract rollover dates based on the contract specifications.