The following are what we suggest for best practices.
Do not deploy NinjaScript Source Files - If you are a commercial vendor you should never distribute the NinjaScript .cs source code files even if your IP is contained within an assembly or proprietary DLL. Source code files are editable by users and can result in unnecessary support issues.
Naming Conventions - Please use consistent naming convention with your indicators and strategies. We suggest adding a prefix to an indicator name. If your company name is "Hyper" you could name your indicators "HyperTrend" or "HyperOscillator" for example.
Clean up your resources - Always free up resources such as external windows DLL's or license management related resources. Resources should be freed within the Dispose() method. NinjaTrader calls this method as an indicator or strategy is no longer used.
User Authentication Trigger - If you have proprietary user authentication process ensure that it is triggered within the OnBarUpdate() method. This ensures that users are not forced to endure unnecessary delays on NinjaTrader start up or dialog windows that display available indicators and strategies are loaded. NinjaTrader, LLC provides a free licensing service for qualified 3rd party developers.
User Authentication Check State - A license check should only be performed once and maintain its check state.
User Authentication Time Out - A license check should have a time out in case of internet issues. This ensures that NinjaTrader does not lock up.
Custom Installer - If you provide a custom installer, the installer should not overwrite any NinjaTrader deployed files (such as UserDefinedMethods.cs) and you should provide an uninstall option which removes all installed files
Test on Windows XP, Vista and 2000 - NinjaTrader customers run on XP, Vista and 2000 and you should make sure that your indicators, custom installers and external DLLs (if any are used) properly run on all operating systems
Expose Indicator States - If your proprietary indicator acts as a trend state (green bars are bullish, red bearish) its good practice to expose the indicators's state so that consumers of your indicators can use them within their own custom indicator or strategy.