NinjaTrader’s support for strategies is definitely superior to that of StrategyDesk. NinjaTrader allows strategies to control the number of shares bought and sold, so it can be setup to roll profits into the next trade for backtesting (you could do taxes as well, but I haven’t bothered with that yet). The optimizer is pretty straightforward. A strategy can define a number of parameters and then the optimizer can be told to run through a range of values for each parameter by a specific increment and the optimizer runs the strategy through all combinations of input values. The optimizer also lets you select from canned criteria on what to maximize, but I found their options a little odd. While this functions well enough its quite slow, and not just because its test space is exponential. NinjaTrader is written in C# as are its canned indicators and the problem with that is that the .Net runtime is pretty piss poor at floating point performance (gamed benchmarks from people trying to ‘prove’ Java or .Net faster then C/C++ not withstanding). On top of that it isn’t multi-threaded, so it doesn’t take advantage of a multi-core box.
I’m currently trying to decide if I should just keep letting it plug along, or if I should write up something in C++ using opentick as the datafeed, so I can get results coming out more quickly.